• 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

Object Storage Arubacloud
0 głosów
171 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ź 220 wizyt
pytanie zadane 24 lipca 2021 w C i C++ przez Bartusio445 Początkujący (290 p.)
0 głosów
2 odpowiedzi 251 wizyt
pytanie zadane 4 listopada 2016 w C i C++ przez vega Użytkownik (510 p.)
0 głosów
3 odpowiedzi 943 wizyt

92,555 zapytań

141,402 odpowiedzi

319,553 komentarzy

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

...