Witam wszystkich kolegów,
Dopiero zaczynam przygodę z C++ i od paru dni ćwiczę. Postanowiłem napisać prosty kalkulator z menu wyświetlane poprzez wywołanie funkcji. Funkcja poprawnie przekazuje parametr ale tylko raz. Po wykonaniu jakichkolwiek obliczeń przy pomocy kalkulatora chcćc wybrać ponowne obliczenia, program zachowuje się tak ze wywołuje kolejno całego switcha az kończy prace.
Nie wiem czy jasno to opisałem ale przy pierwszym uruchomieniu switch działa po czym przy probie następnych obliczeń parametr juz nie jest do niego przekazywany.
Nie chce rozwiązania na tacy tylko malej podpowiedzi wolałbym sam dojść do rozwiązania.
Poniżej kod:
#include <iostream>
using namespace std;
int menu(int wybor1){
std::cout <<"[1] Dodawanie"<<endl;
std::cout <<"[2] Odejmowanie"<<endl;
std::cout <<"[3] Mnozenie"<<endl;
std::cout <<"[4] Dzielenie"<<endl;
std::cout <<"[5] Koniec"<<endl;
std::cin >>wybor1;
return wybor1;
}
int main()
{
int wybor, a, b, wynik;
wybor = menu(wybor);
switch(wybor){
case 1:
std::cout <<"Wybrales dodawanie"<<endl;
std::cout <<"Wpisz a:"<<endl;
std::cin>>a;
std::cin.good();
if( cin.good() == false){
std::cout<<"Wprowadziles niepoprawne dane. Sprobuj jeszcze raz"<<endl;
menu(wybor);
}
else {
std::cout <<"Wpisz b:"<<endl;
std::cin>>b;
wynik = a + b;
std:cout <<"Wynik dodawania to: "<< wynik<<endl;
menu(wybor);
}
case 2:
std::cout<<"Wybrales odejmowanie"<<endl;
std::cout<<"Wpisz a:"<<endl;
std::cin>>a;
std::cin.good();
if ( cin.good() == false ){
std::cout<<"Wprowadziles niepoprawne dane. Sprobuj jeszcze raz"<<endl;
menu(wybor);
}
else{
std::cout<<"Wpisz b:"<<endl;
std::cin>>b;
wynik = a-b;
std::cout<<"Wynik odejmowania to: "<<wynik<<endl;
menu(wybor);
}
case 3:
std::cout<<"Wybrales mnozenie"<<endl;
std::cout<<"Podaj a:"<<endl;
std::cin>>a;
std::cin.good();
if( cin.good() == false){
std::cout<<"Wprowadziles niepoprawne dane. Sprobuj jeszcze raz"<<endl;
menu(wybor);
}
else{
std::cout<<"Podaj b:"<<endl;
std::cin>>b;
wynik = a*b;
std::cout<<"Wynik mnozenia to: "<<wynik<<endl;
menu(wybor);
}
case 4:
std::cout<<"Wybrales dzielenie"<<endl;
std::cout<<"Podaj a:"<<endl;
std::cin>>a;
std::cin.good();
if( cin.good() == false){
std::cout<<"Wprowadziles niepoprawne dane. Sprobuj jeszcze raz"<<endl;
menu(wybor);
}
else{
std::cout<<"Podaj b:"<<endl;
std::cin>>b;
wynik = a/b;
std::cout<<"Wynik dzielenia to: "<<wynik<<endl;
menu(wybor);
}
case 5:
std::cout<<"Koniec dzialania programu";
break;
}
return 0;
}