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

Pytanie. Instrukcja if.

Object Storage Arubacloud
0 głosów
136 wizyt
pytanie zadane 10 marca 2022 w C i C++ przez Nikso Nowicjusz (230 p.)

A więc mam taki problem z tym kodem:

#include <iostream>
#include <conio.h>

using namespace std;

int w[7];

int main()
{
	   cout << "Znajdź 3 dobre liczby spośród wymienionych:\n";
    cout << "1.\n";
    cout << "2.\n";
    cout << "3.\n";
    cout << "4.\n";
    cout << "5.\n";
    cout << "6.\n";
    cout << "7.\n";
    cout << "8.\n";
    cout << "9.\n";
    cout << "10.\n";
    cout << "11.\n";
    cout << "12.\n";
    cout << "13.\n";
    cout << "14.\n";
    cout << "15.\n";
    cout << "16.\n";
    cout << "17.\n";
    cout << "18.\n";
    cout << "19.\n";
    cout << "20.\n";
    cout << "21.\n";
    cout << "22.\n";
    cout << "23.\n";
    cout << "24.\n";
    cout << "25.\n";
    cout << "26.\n";
    cout << "27.\n";
    cout << "28.\n";
    cout << "29.\n";
    cout << "30.\n";
    cout << "31.\n";
    cout << "\n";
    for(int i = 0; i < 3; i++)
    {
      cout << "Wybierz dane\n";
      cin >> w[i];
      cout << "Zapisano\n";
      if (w[i] == 1 && w[i] == 8 && w[i] == 23)
      {
        cout << "Znalazłeś to!!!\n";
        sleep(1);
      }
    }
}

Jak jest if(w[i] == 1 && w[i] == 8 && w[i] == 23)

To niestety nie działa. Wiem że ma być to zrobione w ten sposób: if(w[0] == 1 && w[1] == 8 && w[2] == 23)

Ale niestety będe musiał podawać liczby w odpowiedniej kolejności, ponieważ tablica w[7] zapiuje po kolei: 0, 1, 2, 3, 4, 5, 6

Więc jak mogę to zrobić aby napis "Znalazłeś to!!!" Pojawiał się bez względu na kolejność.

Czyli coś w tym stylu:

Wpisuje w programie liczby 1, 8, 23 lub w innej kolejności, np. 23, 1, 8. I pojawia się napis. Pomocy jak mogę to zrobić?

komentarz 10 marca 2022 przez Oscar Nałogowiec (29,290 p.)
edycja 10 marca 2022 przez Oscar
if(w[i] == 1 && w[i] == 8 && w[i] == 23)

Jedna zmienna (w[i]) nie może być równocześnie równa 1 i równa 8. Coś źle zapisałeś warunek. Kompilator umie dać ostrzeżenie, że warunek nigdy nie jest spełniony, ale trzeba włączyć odpowiednie opcje.

Rozwiązaniem problemu jest (z matematycznego punktu widzenia) zbiór - w zbiorach sprawdza się czy dany element występuje obojętnie na którym miejscu. Jednak, zanim zaczniesz pisać, sprecyzuj wymagania - czy liczby mogą się powtarzać, czy na wejściu musza być obok siebie itp.

komentarz 10 marca 2022 przez Nikso Nowicjusz (230 p.)

Okej. Naprawiłem. Jeśli ktoś by się spotkał z takim problemem to tłumacze jak to zrobiłem:

Najpierw zrobiłem zmienne int w, i;

Wywaliłem pętle for i dałem coś takiego:

cin >> w;
i += w;
cout << "Zapisano\n";
sleep(1);
 if (i == 32)
 {
    cout << "Znalazłeś to!!!\n";
     sleep(1);
     exit(0);
    }
komentarz 10 marca 2022 przez Oscar Nałogowiec (29,290 p.)
To w końcu wczytujesz jedną czy 3 liczby? Jeśli wywaliłeś pętle, to co zostało? Jednorazowe wczytanie? Skoro sumujesz to chyba jest to w pętli, w takim razie sprawdzasz jedynie sumę liczb. Nie tylko 1, 8 i 23 sumują się do 32.

1 odpowiedź

0 głosów
odpowiedź 10 marca 2022 przez adrian17 Ekspert (344,860 p.)

Więc jak mogę to zrobić aby napis "Znalazłeś to!!!" Pojawiał się bez względu na kolejność.

Nie możesz tego tak po prostu jednym if-em zrobić. Musisz, po wczytaniu wszystkich liczb (albo podczas wpisywania) sprawdzić osobno czy liczba 1 wystąpiła chociaż raz, czy liczba 8 wystąpiła chociaż raz, czy liczba 23 wystąpiła chociaż raz.

No i zgadzam się że przecież

Nie tylko 1, 8 i 23 sumują się do 32.

komentarz 10 marca 2022 przez Nikso Nowicjusz (230 p.)
Tera działa. Ja nie pokazałem całego programu.

Cały program wraca spowrotem po napisie "Znalazłeś to!!!"

I zaczyna się od początku

Podobne pytania

0 głosów
1 odpowiedź 501 wizyt
pytanie zadane 7 sierpnia 2017 w Java przez LukasHardwares Początkujący (490 p.)
0 głosów
2 odpowiedzi 364 wizyt
pytanie zadane 29 marca 2017 w C i C++ przez kornel53 Obywatel (1,610 p.)
0 głosów
3 odpowiedzi 500 wizyt

92,536 zapytań

141,377 odpowiedzi

319,454 komentarzy

61,922 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!

...