Problem z zadaniem.

0

Witam, od niedawna zacząłem uczyć się C++, korzystam z książki Alex'a Allain'a "C++ Podręcznik dla początkumących". Mam zadanie na konieć rozdziału: Napisz program udostępniający menu, które pozwala użytkownikowi dokonać wyboru spośród różnych opcji. Jeśli odpowieź udzielona przez użytkonika nie jest zgodna z żadną z opcji, wyświetl menu jeszcze raz.

Oto mó kod:

#include <iostream>

using namespace std;

int main()
{
    int opcja;
    cout << "Wybierz: " << "\n";
    cout << "1. Podaj imie: " << "\n";
    cout << "2. Podaj kolor: " << "\n";
    cout << "3. Zakoncz." << "\n";
    cin >> opcja;

    if(opcja == 1)
    {
        cout << "Filip" << "\n";
    }
    else if (opcja == 2)
    {
        cout << "Niebieski" << "\n";
    }
    else if (opcja == 3)
    {
        return 0;
    }
    while (opcja >=4 && opcja !=1 && opcja != 2 && opcja != 3);
    {
    cout << "Wybierz: " << "\n";
    cout << "1. Podaj imie: " << "\n";
    cout << "2. Podaj kolor: " << "\n";
    cout << "3. Zakoncz." << "\n";

    }

}

Po wybraniu odpowiedzi wyświetla się odpowiedz wraz z menu. Coś mam nie tak pętlą chyba, bo bez pętli chodzi. Znalazłem w googlach podobne zadanie, ale nie było odpowiedzi na moje pytanie. Z góry dziękuję i pozdrawiam.

0

Masz kod przed pętlą więc wykonuje się przed pętlą, jak wrzucisz to wszystko do pętli to powinno działać tak jak chcesz, tylko musiałbyś zainicjalizować zmienną opcja tak aby pętla się wykonała, ewentualnie zamiast while użyć do-while.

0

Dzieki za odpowiedz, juz zabieram się za poprawki. Pozdrawiam

0

Okej, poprawiłem. Ogolnie działa ale po wyświtleniu menu ponownie i wybraniu poprawnej opcji program kończy działanie bez podania odpowiedzi.

0

Pokaż kod

0

#include <iostream>

using namespace std;

int main()
{
int opcja;
cout << "wybierz: " << endl;
cout << "1. Wyswietl imie." << endl;
cout << "2. Jaka dzis pogoda?" << endl;
cout << "3. Zakoncz." << endl;
cin >> opcja;

do
{
if(opcja == 1)
{
    cout << "Filip" << endl;
}
else if(opcja == 2)
{
    cout << "Peda jak zwykle." << endl;
}
else if(opcja == 3)
{
    return 0;
}
else if(opcja >=4)
{
cout << "Wybierz: " << endl;
cout << "1. Wyswietl imie." << endl;
cout << "2. Jaka dzis pogoda?" << endl;
cout << "3. Zakoncz." << endl;
cin >> opcja;
}
}while(opcja >= 4);

}

0

Zamiast sprawdzania opcji w warunku pętli łatwiej i czytelniej będzie zrobić tak:

bool run = true;

do
{
    ...
    if (opcja >= 4)
    {
        ...
        run = false;
    }
} while(run);

Tą drabinkę if i else if należy zastąpić switch-case.

Poza tym, jako że masz pętlę do-while to powinieneś umieścić menu w pętli jako pierwsza rzecz która się wykonuje a potem następuje pobranie wyboru użytkownika i switch-case z różnymi opcjami.

0

Rozumiem, niestety do switch case jeszcze nie doszedłem, dlatego używam tego co już przerobiłem.Moge korzystać z if lub 3 pętli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0