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

C++ Jak okodowac cofanie do MENU

VPS Starter Arubacloud
0 głosów
6,709 wizyt
pytanie zadane 8 października 2015 w C i C++ przez LajkLinux Nowicjusz (240 p.)
edycja 8 października 2015 przez LajkLinux
 

Witam . Mam pytanie jak okodować cofanie się do menu głownego np. Jak w powyższym kodzie wybiore w menu glownym opcje KALKULATOR a potem po wybraniu opcji chce się cofnąć do MENU GŁOWNEGO to jaki kod powinnienem zastosować w switchu ?

Z góry dzieki za odpowiedzi ;)

 

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

using namespace std; 
int wybor;

int main()
{   

    cout << "=============" << endl;
    cout << "=MENU GLOWNE=" << endl;
    cout << "=============" << endl;
    cout << "1.Kalkulator"  << endl;
    cout << "2.Gra znajdz liczbe"  << endl;
    cout << "3.Wyloguj"     << endl;
    cout << "Wybierz: "; cin>>wybor;

    int x, y;

    for (;;)
    {
     switch (wybor)
     {
       case 1:
       system("clear");
       int wybor2;

       cout << "============"              << endl;
       cout << "=KALKULATOR="              << endl;
       cout << "============"              << endl;
       cout << "Podaj liczbe x: "; cin>>x;
       cout << "Podaj liczbe y: "; cin>>y;
       cout << "1.Dodawanie"               << endl;
       cout << "2.Odejmowanie"             << endl;
       cout << "3.Mnozenie"                << endl;
       cout << "4.Dzielenie"               << endl;
       cout << "5.Powrot do Menu Glownego" << endl;

       cout << "Wybierz: "; cin>>wybor2;

       switch (wybor2)
       {
         case 1:
          cout << "Suma = " << x+y;
          getchar();getchar();
         break;
         case 2:
          cout << "Roznica = " << x-y;
          getchar();getchar();
         break;
         case 3:
          cout << "Iloczyn = " << x*y;
          getchar();getchar();
         break;
         case 4:
         if (x==0)
         {
          cout << "Nie dzielimy przez ZERO!" << endl;
          getchar();getchar();
         }
         else
         {
          cout << "Iloraz = " << x/y;
          getchar();getchar();
         }
         break;
       }
       break;

     }
    }
    return 0;
}

 

3 odpowiedzi

+1 głos
odpowiedź 8 października 2015 przez pierep94 Bywalec (2,720 p.)
wybrane 8 października 2015 przez LajkLinux
 
Najlepsza

Jak poczekasz do wieczora, podrzucę Ci kod - teraz niestety jadę do pracy.

Moja sugestia jest taka: Wyświetlanie menu (bez pobierania x i y - to dorobisz sobie później) zrób w osobnej funkcji, która w returnie zwróci Ci wartość menu: np.

int funkcja(){
cout << "TU SOBIE WYŚWIETLASZ MENU";
cout << "Twój wybór: ";
cin >> wybor;
return wybor;
} // koniec funkcji

. Wtedy będziesz mógł wywołać tą funkcję w main i wtedy zrobić switcha, który wykona wszystkie operacje. Jak return z funkcji da 3 - dokona się mnożenie, jak 5 - wywołasz sobie jeszcze raz funkcję wyświetlania menu. Dopiero teraz pobierz sobie x i y - bo łatwiej będzie pobrać z funckji jedną wartość niż tablicę [wybor, x, y] - to sobie jeszcze później poćwiczysz :) 

Musisz się zapoznać z tematem funkcji, żeby zrobić prawidłowy kod :) Ale nie martw się, to całkiem proste, film Pana Mirka całkiem przystępnie Ci to wytłumaczy :) http://miroslawzelent.pl/kurs-c++/wlasne-funkcje-podejscie-proceduralne/

Wybacz, że tak chaotycznie, właśnie jadę autobusem. 

Pochwal się działającym kodem!

komentarz 8 października 2015 przez LajkLinux Nowicjusz (240 p.)
edycja 8 października 2015 przez LajkLinux

Postaram się zrobić tak jak mówisz, ale nie wiem czy mi to wyjdzie jak będe miał jakieś problemy napiszie tu . 

I taka mała prośba kodu mi nie podawaj wolał bym sam to napisac nic przepisac od kogoś .

I oczywiście dzieki za odpowiedź .

komentarz 8 października 2015 przez LajkLinux Nowicjusz (240 p.)
edycja 8 października 2015 przez LajkLinux

Dobra powiedzmy ze narazie kawałek kody wygląda tak 

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <unistd.h>

using namespace std;

int wybor, wybor0, x, y;

void menu();

void kalk();

void kalkmenu();


int main()
{

    menu();
    cout << "Wybierz: "; cin>>wybor;

    switch (wybor)

    {
      case 1:
      system ("clear");
      kalkmenu();
      cout << "Podaj liczbe x: "; cin>>x;
      cout << "Podaj liczbe y: "; cin>>y;
      kalk();
      cout << "Wybierz: "; cin>>wybor0;

      switch (wybor0)
      {
       case 1:
       cout << "Suma = " <<x+y;
       getchar();getchar();
       break;
       case 2:
       cout << "Roznica = " <<x-y;
       getchar();getchar();
       break;
       case 3:
       cout << "Iloczyn = " <<x*y;
       getchar();getchar();
       break;
       case 4:
       cout << "Iloraz = " <<x/y;
       getchar();getchar();
       break;
       case 5:
       system("clear");
       menu();
       break;
       default: cout << "Nie ma takiej opcji w MENU!"<<endl;
      }


      break;





    }
    return 0;

}


void menu()
{
    cout << "=============" << endl;
    cout << "=MENU GLOWNE=" << endl;
    cout << "=============" << endl;
    cout << "1.Kalkulator"  << endl;
    cout << "2.Gra znajdz liczbe"  << endl;
    cout << "3.Wyjdz"     << endl;
}

void kalk()
{

       cout << "1.Dodawanie"               << endl;
       cout << "2.Odejmowanie"             << endl;
       cout << "3.Mnozenie"                << endl;
       cout << "4.Dzielenie"               << endl;
       cout << "5.Powrot do Menu Glownego" << endl;
}

void kalkmenu()

{
       cout << "============"              << endl;
       cout << "=KALKULATOR="              << endl;
       cout << "============"              << endl;

}

I teraz ma inne pytanie a właściwie jak to zamknać w nieskończonej pentli ?

2 godziny nad tym siedzialem próbowałem wielu sposobów i działało ale nie tak jak ja bym chciał .

 

komentarz 8 października 2015 przez pierep94 Bywalec (2,720 p.)
Okej :) spróbowałabym w takim razie załatwić tą część, którą chcesz powtórzyć pętlą do..while. Dodaj przycisk zakonczenia (np. X) i przy kazdym obiegu petli zrob "Jesli chcesz zakonczyc, wcisnij X, jesli nie, wcisnij dowolny klaiwsz". do....while(zmienna != 'X').

Albo po prostu całego maina możesz tak załatwić w nieskońcxonej, albo i skończonej pętli.
komentarz 8 października 2015 przez LajkLinux Nowicjusz (240 p.)
Spróbóje potem napisze jaki efekt .
komentarz 8 października 2015 przez LajkLinux Nowicjusz (240 p.)

Niby działa ale też nie tak jak bym chciał , czy nie dało by się tego jakoś zmienić ze jak nacisne w menu KALKULATORA "5" to cofa mnie do menu głównego, ale jak nacinsę inną opcje np 1,2,3 lub 4 to pentla się powtarza do tej pory aż nacisne 5? 

A i tu masz jeszcze ten kod co napisałem jak kazałeś że 'x' wychodzi. Pewnie dało się to dużo lepiej napisać.

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <unistd.h>

using namespace std;

int wybor, wybor0, x, y;
char wybor1;

void menu();

void kalk();

void kalkmenu();

int main()
{

    menu();
    cout << "Wybierz: "; cin>>wybor;

do
{
   switch (wybor)

    {
      case 1:
      system ("clear");
      kalkmenu();
      cout << "Podaj liczbe x: "; cin>>x;
      cout << "Podaj liczbe y: "; cin>>y;
      kalk();
      cout << "Wybierz: "; cin>>wybor0;

      switch (wybor0)
      {
       case 1:
       cout << "Suma = " <<x+y;
       getchar();getchar();
       break;
       case 2:
       cout << "Roznica = " <<x-y;
       getchar();getchar();
       break;
       case 3:
       cout << "Iloczyn = " <<x*y;
       getchar();getchar();
       break;
       case 4:
       cout << "Iloraz = " <<x/y;
       getchar();getchar();
       break;
       case 5:
       system("clear");
       menu();
       break;
       default: cout << "Nie ma takiej opcji w MENU!"<<endl;
      }
      break;
      case 3:
      exit(0);
      break;
      default: cout << "Nie ma takiej opcji w MENU!"<<endl;

    }
    cout << "Jezeli chcesz zakonczyc wcisnij 'x', jezeli nie dowolny przycisk";
    cin>>wybor1;

    if (wybor1==x)
    {
      exit(0);
    }

}while (wybor1!='x');

    return 0;


}



void menu()
{
    cout << "=============" << endl;
    cout << "=MENU GLOWNE=" << endl;
    cout << "=============" << endl;
    cout << "1.Kalkulator"  << endl;
    cout << "2.Gra znajdz liczbe"  << endl;
    cout << "3.Wyjdz"     << endl;
}

void kalk()
{

       cout << "1.Dodawanie"               << endl;
       cout << "2.Odejmowanie"             << endl;
       cout << "3.Mnozenie"                << endl;
       cout << "4.Dzielenie"               << endl;
       cout << "5.Powrot do Menu Glownego" << endl;
}

void kalkmenu()

{
       cout << "============"              << endl;
       cout << "=KALKULATOR="              << endl;
       cout << "============"              << endl;

}

 

komentarz 9 października 2015 przez pierep94 Bywalec (2,720 p.)

Zamień x na 5 i zamiast wyjścia z pętli zrób tam to menu :) Bo ten x to w sumie chyba Ci do szczescia niepotrzebny. Kiedy wcisniesz 1,2,3,4 - powtorz petle, kiedy wcisniesz 5 - wywolaj funkcje Menu i powróć do początku pętli. 

Wydaje mi sie (nie jestem w stanie sprawdzix, bo znowu jade) ze kod moze wygladac tez tak - bez funkcji

do
{
   cout << TWOJE MENU
   do{

      // Tutaj pobierasz wybór do switcha
      // Tutaj też wstawiasz switcha


   }while(wybor<5 && wybor>0) // jak wybierzesz liczby z przedzialu 1-4 to wykona Ci tą pętlę jeszcze raz. 



}while(wybor==5) // Kiedy wybierzesz 5, wykona pętlę jeszcze raz - wróci do menu

 

+1 głos
odpowiedź 8 października 2015 przez Vodoo Dyskutant (9,270 p.)
Możesz okodować menu w jednej funkcji, a switch w drugiej. Jeśli ze switcha będziesz chciał cofnąć się do menu to wywołujesz odpowiednią funkcje.
+1 głos
odpowiedź 8 października 2015 przez pewolt Mądrala (5,790 p.)
usun pierwszego switch'a i zmienne w petli daj poza nia bo moga byc problemy

a na koniec wywal cout z "powrot do menu..."

jak masz jeszcze jakies menu to pokaz caly kod
komentarz 8 października 2015 przez LajkLinux Nowicjusz (240 p.)

Ogólnie cały kod wygląda tak . 

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

using namespace std;

int wybor;

int main()
{
    
 
    cout << "=============" << endl;
    cout << "=MENU GLOWNE=" << endl;
    cout << "=============" << endl;
    cout << "1.Kalkulator"  << endl;
    cout << "2.Gra znajdz liczbe"  << endl;
    cout << "3.Wyloguj"     << endl;
    cout << "4.Wyjscie: "; cin>>wybor;

    int x, y;

    for (;;)
    {
     switch (wybor)
     {
       case 1:
       system("clear");
       int wybor2;

       cout << "============"              << endl;
       cout << "=KALKULATOR="              << endl;
       cout << "============"              << endl;
       cout << "Podaj liczbe x: "; cin>>x;
       cout << "Podaj liczbe y: "; cin>>y;
       cout << "1.Dodawanie"               << endl;
       cout << "2.Odejmowanie"             << endl;
       cout << "3.Mnozenie"                << endl;
       cout << "4.Dzielenie"               << endl;
       cout << "5.Powrot do Menu Glownego" << endl;

       cout << "Wybierz: "; cin>>wybor2;

       switch (wybor2)
       {
         case 1:
          cout << "Suma = " << x+y;
          getchar();getchar();
         break;
         case 2:
          cout << "Roznica = " << x-y;
          getchar();getchar();
         break;
         case 3:
          cout << "Iloczyn = " << x*y;
          getchar();getchar();
         break;
         case 4:
         if (x==0)
         {
          cout << "Nie dzielimy przez ZERO!" << endl;
          getchar();getchar();
         }
         else
         {
          cout << "Iloraz = " << x/y;
          getchar();getchar();
         }
         break;
       }
       break;

     }
    }
    return 0;
}

 

komentarz 9 października 2015 przez pewolt Mądrala (5,790 p.)
to mozesz caly program dac do petli a w petli for(;;) dac warunek taki for(;!(wybor2 == 5);)

zmienne nie moga byc w pentlach bo za jakis czas ci ramu zabraknie
komentarz 9 października 2015 przez pewolt Mądrala (5,790 p.)
widze ze juz ci pomogli :3

Podobne pytania

+1 głos
2 odpowiedzi 542 wizyt
+2 głosów
2 odpowiedzi 489 wizyt
pytanie zadane 13 lutego 2021 w C i C++ przez Waran3 Początkujący (460 p.)
0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 24 listopada 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)

92,843 zapytań

141,782 odpowiedzi

320,858 komentarzy

62,174 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...