• 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

VPS Starter Arubacloud
–1 głos
406 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,690 p.)

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

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

92,455 zapytań

141,263 odpowiedzi

319,099 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!

...