Menu i podmenu

0

Witam
Zabrałem się za napisanie programu w którym jest menu i podmenu ( chodzi o to czy się zgadzasz, jeżeli użytkownik napisze tak to użytkownikowi wyświetli się co innego niż jak kliknie nie) o ile munu umiem napisać to podmenu już jest dla mnie problemem. Napisałem taki kod:
#include <iostream>
#include <string>

using namespace std;

int wybor,wybor1;

int main()
{
cout << "MENU" << endl;
cout<<"1.Kwadrat Obwod"<<endl;
cout<<"2.Kwadrat Pelny"<<endl;
cout<<"3.Prostokat Pusty"<<endl;
cout<<"Wybierasz: ";
cin>>wybor;

if(wybor==1)
{
    cout<<"Wybrales obwod kwadratu"<<endl;
    cout<<"Czy chcesz zmienic: ";
    cin>>wybor1;
}


return 0;

}
Jak napisane czy chcesz zmienić to chcę żeby było nie i przekierowywuje do następnego menu a jak będzie tak to chce żeby program się zresetował. Prosił bym o drobną radę bo się zatrzymałem i nwm co dalej. Z góry dzięki

0
  1. Spróbuj wrzucić to w nieskończoną pętle.
  2. To jest fajne zadanie, aby przećwiczyć sobie switche:
    http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Warunek-wielokrotnego-wyboru-switch-case/17
0

wybacz ale nie rozumiem. Mam zamienić od if(wybor==1) na switch i potem robić case czy jak ?

0

Chodzi o coś takiego:

#include <iostream>
#include <string>

using namespace std;

int wybor,wybor1;

int main()
{


while(1){
cout << "MENU" << endl;
cout<<"1.Kwadrat Obwod"<<endl;
cout<<"2.Kwadrat Pelny"<<endl;
cout<<"3.Prostokat Pusty"<<endl;
cout<<"Wybierasz: ";
cin>>wybor;

switch(wybor){
case 1:{
  cout<<"Wybrales obwod kwadratu"<<endl;
    cout<<"Czy chcesz zmienic: ";
    cin>>wybor1;
//Tu może byś jakaś metoda itp,
}
break;
}


return 0;
}
0

Zamiast robić wszystko w main lepiej porozbijać to na osobne funkcje i będzie łatwiej tym zarządzać.

void square_perimeter()
{
    std::cout << "Wybrales obwod kwadratu" << std::endl;
    std::cout << "Czy chcesz zmienic: (1/0) ";

    int choice;
    std::cin >> choice;
    /* Zrób coś z wyborem użytkownika */
}

void main_menu()
{
    bool run = true; // Ta flaga posłuży nam do wyjścia z programu
    do
    {
        std::cout << "MENU" << std::endl;
        std::cout << "1.Kwadrat Obwod" << std::endl;
        std::cout << "2.Kwadrat Pelny" << std::endl;
        std::cout << "3.Prostokat Pusty" << std::endl;
        std::cout << "4.Wyjscie" << std::endl;
        std::cout << "Wybierasz: ";

        int choice;
        std::cin >> choice;

        switch (choice)
        {
            case 1: // Użytkownik wybrał 1
                square_perimeter();
                break;
            case 4:
                run = false;
                break;
            default: // W przypadku gdy żaden case nie pasuje dla choice
                std::cout << "Wybor nieprawidlowy" << std::endl;
                break;
        }
    } while (run);
}

int main()
{
    main_menu();
}

@INH: Widziałem twój komentarz, aby przyjmować ciąg znaków (string) musisz zmienić typ zmiennej na std::string, czyli square_perimeter() powinno wyglądać tak:

void square_perimeter()
{
    std::cout << "Wybrales obwod kwadratu" << std::endl;
    std::cout << "Czy chcesz zmienic (tak/nie):";

    std::string choice;
    std::cin >> choice;

    if(choice == "tak")
    {
        // Użytkownik chce zmienić
    }
    else
    {
        // Użytkownik nie chce zmieniać
    }
    /* Zrób coś z wyborem użytkownika */
}

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