[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 »  |