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

Pytanie. Instrukcja if.

VPS Starter Arubacloud
0 głosów
131 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,100 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ź 490 wizyt
pytanie zadane 7 sierpnia 2017 w Java przez LukasHardwares Początkujący (490 p.)
0 głosów
2 odpowiedzi 353 wizyt
pytanie zadane 29 marca 2017 w C i C++ przez kornel53 Obywatel (1,610 p.)
0 głosów
3 odpowiedzi 488 wizyt

92,453 zapytań

141,262 odpowiedzi

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

...