Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[help] Kalkulator w c++, po zakończeniu pętli powrót do głównej funkcji main.

Ostatnio zmodyfikowano 2022-03-22 18:51
Autor Wiadomość
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:
C/C++
#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";
   
//int liczba = 0;
    //int i=0; i < liczba; i++
   
   
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;
           
//goto exit;
            //exit(0);
           
break;
           
       
default:
           
cout << "Brak wyboru" << tekst << endl;
           
           
break;
       
}
       
//koniec pętli
       
cout << "wprowadzono złą wartość" << endl;
       
break; //<--- zamiast break tutaj ma być skok na początek funkcji main()
   
}
   
//exit:
   
return 0;
}
P-179340
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 » Kurs C++» Poziom 1Obsługa strumienia wejściowego lekcja.
P-179342
« 1 »
  Strona 1 z 1