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

question-closed Problem z pętlą do..while

0 głosów
292 wizyt
pytanie zadane 8 października 2020 w C i C++ przez Filip325 Nowicjusz (160 p.)
zamknięte 8 października 2020 przez Filip325

Cześć, jestem jeszcze dość świeży w temacie C++. Miałem za zadanie napisać program zawierający menu, który przy wyborze nieistniejącej opcji, wyświetla menu od nowa. Przy użyciu pętli for lub while wszystko działało bez problemu. Natomiast podczas używania pętli do..while, program działa tylko dla opcji 2 lub 4, podczas gdy 1 i 2 traktuje jako nieistniejącą. Jakieś pomysły dlaczego tak może się dziać?

Poniżej umieszczam swój kod:

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
#include <windows.h>

using namespace std;

int main()

{
    char wybor;

    cout<<endl;
    cout << "MENU GLOWNE" << endl;
    cout << "1. Danie 1" << endl;
    cout << "2. Danie 2" << endl;
    cout << "3. Danie 3" << endl;
    cout << "4. Danie 4" << endl;

    cout<< "Wybierz danie z listy: ";
    cin >> wybor;

    do
    {
        cout<<"Nie ma takiej opcji w menu!";
        Sleep(1000);
        system("cls");

    cout<<endl;
    cout << "MENU GLOWNE" << endl;
    cout << "1. Danie 1" << endl;
    cout << "2. Danie 2" << endl;
    cout << "3. Danie 3" << endl;
    cout << "4. Danie 4" << endl;

    cout<< "Wybierz danie z listy: ";
    cin >> wybor;

    {

    if(wybor=='1')
                cout << "Wybrane danie to Kotlet schabowy z ziemniakami i mizeria";
    else if (wybor=='2')
                cout << "Wybrane danie to Rosol z makaronem";
    else if (wybor=='3')
                cout << "Wybrane danie to Pizza Neapolitana";
    else if (wybor=='4')
                cout << "Wybrane danie to Piers z kurczaka z frytkami i surowka";
    }
}
while(wybor!='1'&&wybor!='2'&&wybor!='3'&&wybor!='4');

return 0;
}

 

komentarz zamknięcia: Problem został rozwiązany
komentarz 8 października 2020 przez NewEraOfPeace Gaduła (4,790 p.)
Możesz już zamknąć to pytanie (podając najlepiej przy tym odpowiedź, bo może ktoś kiedyś będzie miał bardzo podobny problem), bo dostałeś odp. na drugim forum :)

1 odpowiedź

0 głosów
odpowiedź 8 października 2020 przez Filip325 Nowicjusz (160 p.)

Problem rozwiązał się sam, jednak dowiedziałem się również, że kod ten można napisać o wiele prościej (pomijając 3 zbędne biblioteki w moim przypadku).

Poniżej zamieszczam kod napisany o wiele prościej:

#include <iostream>
#include <windows.h>

using namespace std;

bool print_error()
{
     cout << "Nie ma takiej opcji w menu!";
     Sleep(1000);
     system("cls");
     return true;
}

void print_menu()
{
    cout << endl;
    cout << "MENU GLOWNE" << endl;
    cout << "1. Danie 1" << endl;
    cout << "2. Danie 2" << endl;
    cout << "3. Danie 3" << endl;
    cout << "4. Danie 4" << endl;
    cout << "Wybierz danie z listy: ";
}

int main()
{
    int wybor {0};

    do
    {
        print_menu();
        cin >> wybor;

        switch( wybor )
        {
            case 1 : cout << "Wybrane danie to Kotlet schabowy z ziemniakami i mizeria"; break ;
            case 2 : cout << "Wybrane danie to Rosol z makaronem"; break ;
            case 3 : cout << "Wybrane danie to Pizza Neapolitana"; break ;
            case 4 : cout << "Wybrane danie to Piers z kurczaka z frytkami i surowka"; break ;
        }
     }
     while( [&](){ return wybor<1 || wybor>4 ? print_error() : false; }() );

    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 579 wizyt
pytanie zadane 24 lipca 2021 w C i C++ przez Bartusio445 Początkujący (290 p.)
0 głosów
2 odpowiedzi 514 wizyt
pytanie zadane 4 listopada 2016 w C i C++ przez vega Użytkownik (510 p.)
0 głosów
3 odpowiedzi 1,709 wizyt

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,323 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...