[help] Kalkulator w c++, po zakończeniu pętli powrót do głównej funkcji main.
Ostatnio zmodyfikowano 2022-03-22 18:51
XdekHaker Temat założony przez niniejszego użytkownika |
[help] Kalkulator w c++, po zakończeniu pętli powrót do głównej funkcji main. » 2022-03-22 18:14:27 Witam. Stworzyłem prosty kalkulator w c++. Gdy wpisuję znak alfabetu zamiast liczby mój algorytm się zapętlał, rozwiązałem to przy użyciu dodania "break;". Jednak teraz chcę aby po wpisaniu błędnego znaku (innego niż liczba) po prostu cofał się na sam początek funkcji main(). Próbowałem użyć etykiet (występował loop) i "main();" jednak bez skutku. Ktoś mi wytłumaczy gdzie leży problem i jak mogę skoczyć z tego miejsca (gdy wpiszę błędną wartość) na początek funkcji main() bez ciągłego zapętlania programu (o ile to w ogóle możliwe)? Miejsce w którym chcę wykonać skok na początek zaznaczyłem strzałką w komentarzu, w kodzie. Kod: #include <iostream> #include <cmath> using namespace std;
float mnoz( float x, float y ) { return x * y; } float dodaj( float x, float y ) { return x + y; } float odej( float x, float y ) { return x - y; } float potega( float x, float y ) { return pow( x, y ); } float dziel( float x, float y ) { return x / y; }
int main() { string tekst = "\n*************************\n"; for(;; ) { int wybor; float x, y; cout << "Podaj pierwszą liczbę: " << endl; cin >> x; cout << "Podaj drugą liczbę: " << endl; cin >> y; cout << tekst; cout << "\nChcesz pomnożyć (1), podzielić (2), dodać (3), odjać (4), Potęgować(5) czy Zamknąć(6)?\n" << endl; cin >> wybor; cout << "\n"; switch( wybor ) { case 1: cout << "Wynik mnożenia wynosi: " << mnoz( x, y ) << tekst << endl; break; case 2: if( y == 0 ) { cout << "Nie można dzielić przez 0." << tekst << endl; } else { cout << "Wynik dzielnie wynosi: " << dziel( x, y ) << tekst << endl; } break; case 3: cout << "Wynik dodawania wynosi: " << dodaj( x, y ) << tekst << endl; break; case 4: cout << "Wynik odejmowania wynosi: " << odej( x, y ) << tekst << endl; break; case 5: cout << "Wynik potęgowania wynosi: " << potega( x, y ) << tekst << endl; break; case 6: return 0; break; default: cout << "Brak wyboru" << tekst << endl; break; } cout << "wprowadzono złą wartość" << endl; break; } return 0; } |
|
pekfos |
» 2022-03-22 18:51:06 Zapętlanie się wynika z braku obsługi błędów. Zapoznaj się z punktem "Czyszczenie zawartości strumienia wejściowego" w Obsługa strumienia wejściowego. |
|
« 1 » |