• 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
854 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,630 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 254 wizyt
pytanie zadane 16 października 2019 w C i C++ przez Olgierd47 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 350 wizyt
pytanie zadane 27 lutego 2023 w Python przez niezalogowany
0 głosów
3 odpowiedzi 302 wizyt
pytanie zadane 26 września 2016 w C i C++ przez Arkadiusz Sieczak Początkujący (400 p.)

92,957 zapytań

141,916 odpowiedzi

321,148 komentarzy

62,287 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...