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

Jak wrócić do menu?

Object Storage Arubacloud
+1 głos
494 wizyt
pytanie zadane 23 grudnia 2016 w C i C++ przez Forester Użytkownik (560 p.)

Cześć.

Jako podsumowanie sześciu kursów dot. C++ postanowiłem, że napiszę taki rozbudowany program z opcjami, jakie widać w kodzie. Jak na razie pracuję nad pierwszą - Kalkulator, ponieważ nie ma sensu zajmować się kolejnymi skoro nie umie się wykonać jednej z istotniejszych rzeczy, a mianowicie mam problem z napisaniem instrukcji, która pozwoliła by na powrót do głównego menu programu. 

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

using namespace std;

char wybor_glowny, wybor_kalkulator;
float x, y;

int main()
{
    cout << "Witaj w programie! Wybierz jedna z opcji menu, aby kontynuowac." << endl << endl;

    for(;;)
    {
    cout << "MENU GLOWNE" << endl;
    cout << "-------------" << endl;
    cout << "1. Kalkulator" << endl;
    cout << "2. Odgadnij liczbe" << endl;
    cout << "3. Prawda/Falsz" << endl;
    cout << "4. Pola figur" << endl;
    cout << "5. Inicjaly" << endl;
    cout << "6. Wyjdz z programu" << endl << endl;

    wybor_glowny = getch();

    switch(wybor_glowny)
    {
    case '1':
        {
            cout << "Witaj w kalkulatorze." << endl << endl;

            for(;;)
            {

            cout << endl << "Nacisnij odpowiedni klawisz: " << endl;
            cout << "1. Dodawanie" << endl;
            cout << "2. Odejmowanie" << endl;
            cout << "3. Mnozenie" << endl;
            cout << "4. Dzielenie" << endl;
            cout << "5. Powrot do menu" << endl << endl;

            wybor_kalkulator = getch();

            switch(wybor_kalkulator)
            {
                case '1':
                    {
                    cout << "Podaj pierwsza liczbe: ";
                    cin >> x;

                    cout << "Podaj druga liczbe: ";
                    cin >> y;

                    cout << "Suma: " << x+y << endl << endl;
                break;
                    }

                case '2':
                    {
                    cout << "Podaj pierwsza liczbe: ";
                    cin >> x;

                    cout << "Podaj druga liczbe: ";
                    cin >> y;

                    cout << "Roznica: " << x-y << endl << endl;
                break;
                    }

                case '3':
                    {
                    cout << "Podaj pierwsza liczbe: ";
                    cin >> x;

                    cout << "Podaj druga liczbe: ";
                    cin >> y;

                    cout << "Mnozenie: " << x*y << endl << endl;
                break;
                    }

                case '4':
                    {
                        cout << "Podaj pierwsza liczbe: ";
                        cin >> x;

                        cout << "Podaj druga liczbe: ";
                        cin >> y;

                        if(y==0) cout << "Nie mozna dzielic przez zero." << endl;
                        else cout << "Dzielenie: " << x/y << endl;
                break;
                    }

                case '5':
                break;

                default:
                    cout << "Niepoprawny wybor." << endl;
                break;
            }
            }

        }
    }

    }

    getchar(); getchar();

    return 0;
}

Jak na razie scenariusz jest następujący:
1. Użytkownik klika '1'
2. Ukazuje się menu kalkulatora
3. Użytkownik klika '1', '2', '3' lub '4'
4. Użytkownik wpisuje dwie liczby
5. Wykonuje się działanie
6. Program wraca do menu kalkulatora

I to mnie satysfakcjonuje. Jednak gdy użytkownik chciałby wrócić z kalkulatora do głównego menu, aby wybrać np. opcję Prawda/Falsz, chcę aby umożliwiało mu to kliknięcie '5' (tak jak jest opisane w menu kalkulatora). Jak to zrobić? Bo według obecnego kodu, po kliknięciu tej piątki po prostu mnoży mi się menu kalkulatora.

Będę wdzięczny za podpowiedź.

komentarz 23 grudnia 2016 przez Forester Użytkownik (560 p.)
Rozwiązane.

1 odpowiedź

+1 głos
odpowiedź 23 grudnia 2016 przez kacperdyba Gaduła (3,290 p.)
wybrane 23 grudnia 2016 przez Forester
 
Najlepsza
Zamknij menu w jakiejś funkcji, np displaymenu(){ // twój kod} a następnie spraw, aby użytkownik po kliknięciu 5 uruchamiał tą funkcje.
komentarz 23 grudnia 2016 przez Forester Użytkownik (560 p.)

Mógłbyś wytłumaczyć o co chodzi z tym displaymenu() i jaką bibliotekę do tego potrzeba? Bo nie było tego w żadnym z tych sześciu odcinków Pana Mirosława. ;) Na internecie też nie widzę informacji na ten temat.

Na razie zrobiłem takie coś:

displaymenu()
    {
    cout << "MENU GLOWNE" << endl;
    cout << "-------------" << endl;
    cout << "1. Kalkulator" << endl;
    cout << "2. Odgadnij liczbe" << endl;
    cout << "3. Prawda/Falsz" << endl;
    cout << "4. Pola figur" << endl;
    cout << "5. Inicjaly" << endl;
    cout << "6. Wyjdz z programu" << endl << endl;
    }

 

komentarz 23 grudnia 2016 przez kacperdyba Gaduła (3,290 p.)

Tu nie potrzeba biblioteki. To jest funkcja, tak jak main(). wywołujesz ją wpisując poprostu jej nazwę tzn 

displaymenu();

 

Cały kod wyświetlania menu, i jego obsługi umieść poprostu w tej funkcji, tzn wszystko co odpowiada za menu tam umieszczasz. Następne elementyn, np kalkulator wrzucasz do funkcji calc(); i w switch wywołujesz funkcje, tzn 

switch(a)
{
case '1':
calc();
}

rozumiesz?

komentarz 23 grudnia 2016 przez Forester Użytkownik (560 p.)

Tak?

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

using namespace std;

char wybor_glowny, wybor_kalkulator;
float x, y;

int main()
{
    cout << "Witaj w programie! Wybierz jedna z opcji menu, aby kontynuowac." << endl << endl;

    for(;;)
    {

int displaymenu();

    cout << "MENU GLOWNE" << endl;
    cout << "-------------" << endl;
    cout << "1. Kalkulator" << endl;
    cout << "2. Odgadnij liczbe" << endl;
    cout << "3. Prawda/Falsz" << endl;
    cout << "4. Pola figur" << endl;
    cout << "5. Inicjaly" << endl;
    cout << "6. Wyjdz z programu" << endl << endl;

    wybor_glowny = getch();


    switch(wybor_glowny)
    {
    case '1':
        {
    int calc();
            cout << "Witaj w kalkulatorze." << endl << endl;

            for(;;)
            {

            cout << endl << "Nacisnij odpowiedni klawisz: " << endl;
            cout << "1. Dodawanie" << endl;
            cout << "2. Odejmowanie" << endl;
            cout << "3. Mnozenie" << endl;
            cout << "4. Dzielenie" << endl;
            cout << "5. Powrot do menu" << endl << endl;

            wybor_kalkulator = getch();

            switch(wybor_kalkulator)
            {
                case '1':
                    {
                    cout << "Podaj pierwsza liczbe: ";
                    cin >> x;

                    cout << "Podaj druga liczbe: ";
                    cin >> y;

                    cout << "Suma: " << x+y << endl << endl;
                break;
                    }

                case '2':
                    {
                    cout << "Podaj pierwsza liczbe: ";
                    cin >> x;

                    cout << "Podaj druga liczbe: ";
                    cin >> y;

                    cout << "Roznica: " << x-y << endl << endl;
                break;
                    }

                case '3':
                    {
                    cout << "Podaj pierwsza liczbe: ";
                    cin >> x;

                    cout << "Podaj druga liczbe: ";
                    cin >> y;

                    cout << "Mnozenie: " << x*y << endl << endl;
                break;
                    }

                case '4':
                    {
                        cout << "Podaj pierwsza liczbe: ";
                        cin >> x;

                        cout << "Podaj druga liczbe: ";
                        cin >> y;

                        if(y==0) cout << "Nie mozna dzielic przez zero." << endl;
                        else cout << "Dzielenie: " << x/y << endl;
                break;
                    }

                case '5':
                break;

                default:
                    cout << "Niepoprawny wybor." << endl;
                break;
            }
            }

        }
    }

    }

    getchar(); getchar();

    return 0;
}

Jeśli źle, to proszę o edycję mojego kodu, bo pierwszy raz spotykam się z innymi funkcjami jak main(). ;/

komentarz 23 grudnia 2016 przez kacperdyba Gaduła (3,290 p.)
1. Zamknij funkcje main. Tworzysz funkcje w funkcji - najpierw zamknij main a dopiero potem rozpocznij displaymanu.

2. Umieść displaymenu ponad funkcją main, nie pod nią bo inaczej nie zadziala.

3. W funkcji main po wypisaniu komunikatu wpisz:

displaymenu();

To wywoła funkcje displaymenu.

4. tak samo jak stworzyłeś displaymenu, stwórz calc(){//kod kalkulatora}, a następnie wywołaj ją pod opcją 1 w displaymenu:

calc();
komentarz 23 grudnia 2016 przez Forester Użytkownik (560 p.)
Dzięki, pomogłeś. ;)
komentarz 23 grudnia 2016 przez kacperdyba Gaduła (3,290 p.)
Nie ma sprawy :)

Jak możesz to daj Naj ;)

Podobne pytania

+1 głos
1 odpowiedź 285 wizyt
pytanie zadane 3 września 2016 w C i C++ przez Kamill Winiarski Nowicjusz (130 p.)
0 głosów
1 odpowiedź 199 wizyt
pytanie zadane 23 listopada 2019 w C i C++ przez Hardwell Dyskutant (8,980 p.)
0 głosów
1 odpowiedź 229 wizyt
pytanie zadane 4 stycznia 2017 w JavaScript przez Ditrix Mądrala (5,650 p.)

92,553 zapytań

141,399 odpowiedzi

319,534 komentarzy

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

...