• 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
228 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 (88,340 p.)

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

komentarz 23 października 2017 przez Patrycjerz Mędrzec (192,460 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,640 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ź 352 wizyt
pytanie zadane 22 października 2017 w C i C++ przez Corvette 653 Początkujący (400 p.)
+1 głos
4 odpowiedzi 159 wizyt
0 głosów
1 odpowiedź 135 wizyt

88,325 zapytań

136,919 odpowiedzi

305,555 komentarzy

58,598 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...