• 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

–1 głos
610 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 (93,150 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,570 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,970 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ź 574 wizyt
pytanie zadane 22 października 2017 w C i C++ przez Corvette 653 Początkujący (400 p.)
+1 głos
4 odpowiedzi 410 wizyt
0 głosów
1 odpowiedź 347 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...