• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pętla w ifie

VPS Starter Arubacloud
0 głosów
715 wizyt
pytanie zadane 19 marca 2016 w C i C++ przez luparuwka Początkujący (400 p.)
Chciałbym stworzyć ifa który zwraca prawdę gdy warunek zostanie spełniony w każdej iteracji pętli.

Próbowałem coś takiego ale nie pykło.

if (for(x=0;x<4;x++){for(y=1;y<4;y++){w[x][y-1]!=w[x][y] }  })

5 odpowiedzi

+1 głos
odpowiedź 19 marca 2016 przez draghan VIP (106,230 p.)
bool warunek()
{
     for(int x=0;x<4;x++)
     {
          for(int y=1;y<4;y++) if(w[x][y-1]!=w[x][y]) return false; // zakładam zwrócenie fałszu, kiedy choć jeden element będzie się różnił - jeśli chodziło o odwrotną interpretację, zmień znak różności na równość
     }
     return true;
}

int main()
{
    if(warunek())
    {
        // ...
    }
    else
    {
        // ...
    }
    return 0;
}

Najbardziej elegancko będzie stworzyć funkcję, która sprawdzi Ci, co potrzeba. Tablicę powinieneś przesyłać jako argument, ale to już zabawa dla Ciebie. ;)

komentarz 19 marca 2016 przez Shiro Stary wyjadacz (10,300 p.)
PYTANIE NIE NA TEMAT

Dlaczego w pętli nie użyłeś słowa int ? Możesz mi to wytłumaczyć nigdy nie widziałem takiego zapisu ;/

Miłego dnia :)
1
komentarz 19 marca 2016 przez draghan VIP (106,230 p.)

Bardzo prosta odpowiedź: skopiowałem kod autora. :) Oczywiście po dwóch sekundach poprawiłem, żeby to miało szansę działać, musiałeś mieć szczęście że zdążyłeś zauważyć. :)

Ale jeśli masz zmienną zdefiniowaną przed pętlą, to nie musisz jej definiować w pętli - czasem takie działanie jest pożądane, bo np. potrzebujesz znać ilość iteracji.

int i;

for(i = 0; i < 10; ++i)
{
    // ...
    if(something()) break;
}

// tutaj masz nadal dostępną zmienną i, która zawiera info o tym, ile powtórzeń pętli się wykonało

 

komentarz 19 marca 2016 przez Shiro Stary wyjadacz (10,300 p.)
Dzięki za szybką odpowiedź i wyjaśnienie :)
0 głosów
odpowiedź 19 marca 2016 przez Michał Gibas Pasjonat (19,610 p.)
W pętli umieść if'a który będzie sprawdzał czy coś tam zwróciło wartość true... to jedyne sensowne rozwiązanie...

Pozdrawiam!
0 głosów
odpowiedź 19 marca 2016 przez MetGang Nałogowiec (34,360 p.)

Tak jak kolega powiedział. Najlepiej wklep to w funkcję, która gdy warunek nie zostanie spełniony zwróci false. Natomiast na końcu wszystkich iteracji zwróci true. Pseudo-kod:

bool Foo(arg)
{
    loop { if(!warunek) return false; }
    return true;
}

Możesz pobawić się też w std::all/any/none_of(), ale jak nie jesteś zaawansowany to lepiej zastosuj to wyżej.

0 głosów
odpowiedź 19 marca 2016 przez luparuwka Początkujący (400 p.)
Zupełnie nie pomyślałem. Wybaczcie zawracanie głowy i dziękuję bardzo za odpowiedzi.
0 głosów
odpowiedź 19 marca 2016 przez criss Mędrzec (172,590 p.)

Wykorzystaj wyrażenia lambda. 

auto check = [&]()->bool { /* tutaj pętla, warunki, returny - po prostu funkcja */ };

if(check()) { /* Do something */ }

Możesz równie dobrze zdefiniować lambda wewnątrz ifa zamiast przypisywać najpierw do check.

http://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11

Podobne pytania

0 głosów
3 odpowiedzi 235 wizyt
pytanie zadane 16 października 2019 w C i C++ przez Olgierd47 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 197 wizyt
pytanie zadane 27 lutego 2023 w Python przez niezalogowany
0 głosów
3 odpowiedzi 269 wizyt
pytanie zadane 26 września 2016 w C i C++ przez Arkadiusz Sieczak Początkujący (400 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...