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

Porównywanie zmiennej z tablicą zmiennych w warunku

Object Storage Arubacloud
–1 głos
416 wizyt
pytanie zadane 23 października 2017 w C i C++ przez Corvette 653 Początkujący (400 p.)
edycja 23 października 2017 przez criss

w moim kodzie mam pewien problem
krótko opisując:
mam tablice z 50 zmiennymi. Musze sprawdzić czy zmienna

wynik == tablica[ 0 ] || wynik == tablica[ 1 ] ||...|| wynik == tablica[ 49 ] || wynik == tablica[ 50 ]

teraz jestem w stanie to napisać ręcznie jednak może wystąpić przypadek że ta tablica będzie zawierać 1000 zmiennych czy można to skrócić?
próbowałem tak:

wynik == * tablica //- nie działa
wynik == tablica[] //- nie działa
4
komentarz 23 października 2017 przez Benek Szeryf (90,870 p.)

Wypaliło mi oko. równy, równać się, porównanie piszemy przez ó.

komentarz 23 października 2017 przez Patrycjerz Mędrzec (192,320 p.)
Mi również wypaliło przy zobaczeniu kodu… albo raczej czegoś, co ma przypominać kod.

3 odpowiedzi

0 głosów
odpowiedź 23 października 2017 przez criss Mędrzec (172,590 p.)
wybrane 23 października 2017 przez Corvette 653
 
Najlepsza

Użyj pętli. Wtedy potrzebujesz jednak dodatkowej zmiennej..

bool cond = false;
for (int i = 0; i < 51; i++)
{
   if (wynik == tablica[i])
   {
      cond = true;
      break;
   }
}
if (cond) { /* ... */ }

..więc proponuję wrzucić to w lambde i od razu ją wywoływać:

if (
   [&tablica, &wynik] () -> bool {
      for (int i = 0; i < 51; i++)
         if (wynik == tablica[i]) return true;
      return false;
}()) { /* ... */ }

Możesz też najpierw przypisać lambde do zmiennej i dopiero potem wołać, jeśli wygląda to zbyt zagmatwanie (a pewnie tak :D):

auto lambda = [&tablica, &wynik] () -> bool {
   for (int i = 0; i < 51; i++)
      if (wynik == tablica[i]) return true;
      return false;
};

if(lambda()) { /* ... */ }

 

+1 głos
odpowiedź 23 października 2017 przez Munvik Dyskutant (9,350 p.)
Przecież masz do tego pętle...
+1 głos
odpowiedź 23 października 2017 przez Szahid Pasjonat (20,930 p.)
Użyj pętli for która przeleci przez całą tablice a w niej instrukcje warunkową która sprawdza czy wynik== tablice[i]

Jeśli bedzie prawdziwy to zasygnakizuj to i przerwij pętle breakiem

Podobne pytania

0 głosów
1 odpowiedź 475 wizyt
pytanie zadane 22 października 2017 w C i C++ przez Corvette 653 Początkujący (400 p.)
+1 głos
4 odpowiedzi 236 wizyt
0 głosów
1 odpowiedź 238 wizyt

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...