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

Pytanie. Instrukcja if.

0 głosów
76 wizyt
pytanie zadane 10 marca 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 przez Oscar Nałogowiec (25,670 p.)
edycja 10 marca 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 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 przez Oscar Nałogowiec (25,670 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 przez adrian17 Ekspert (320,640 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 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ź 277 wizyt
pytanie zadane 7 sierpnia 2017 w Java przez LukasHardwares Początkujący (490 p.)
0 głosów
2 odpowiedzi 250 wizyt
pytanie zadane 29 marca 2017 w C i C++ przez kornel53 Obywatel (1,610 p.)
0 głosów
3 odpowiedzi 252 wizyt

88,325 zapytań

136,919 odpowiedzi

305,558 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.

...