trycatchthrow_Fachwissen
-
Hallo liebe C++ Freunde, Ich muss mich mit der Funktionsweise von trycatchthrow auseinandersetzen und habe das Prinzip und den Sinn ungefähr verstanden aber es mangelt an Fachkenntnissen: Hier ein Beispiel:
#include<iostream> #include<stdexcept> using namespace std; void eingabesicherheitssequenz(); int main() { char entscheidung; do { cin.sync(); try { eingabesicherheitssequenz(); } catch (domain_error& exc) {cout<<"Exception caught:" << exc.what() << endl;} cin.clear(); cin.sync(); cout<<"Weitere Zahlen einlesen? (y/n)"; cin>>entscheidung; }while (cin && entscheidung =='y'); return 0; } void eingabesicherheitssequenz(){ int zahl1{}; int zahl2{}; int merkregister{}; int n{1}; cout<<"Zwei positive ganze Zahlen eingeben: "; cin>>zahl1>>zahl2; if (zahl1<=0 || zahl2 <= 0) { cout<<"Fehleingabe, Programmabruch"<<endl; throw domain_error("die Eingabe enthaelt negative Argumente"); } while(zahl1 != zahl2) { cout<<zahl1<<"\t"<<zahl2<<endl; if (zahl1<zahl2) { zahl2 = zahl2-zahl1; } else{ merkregister = zahl1; zahl1=zahl2; zahl2=merkregister-zahl1; } ++n; cout<<zahl1<<"\t"<<zahl2<<"\n"<<"Schritte "; n > 1 ? cout << "e" : false; cout << "zum ggT" << endl; } }Wozu sind die Anweisungen in den Zeilen 10 13 und 14 gut ?
cin.clear(); cin.sync();muss man für diese Prozedur den Algorithmus immer aus der main in eine Funktion
auslagern oder geht es auch anders ?
Hat jemand gute Beispiele auf Lager ?
-
muss man für diese Prozedur den Algorithmus immer aus der main in eine Funktion
auslagern oder geht es auch anders ?
Mit cin.clear() werden die Fehlerflags gelöscht und cin.sync() synchronisiert den Eingabepuffer. Viel mehr möchte ich auch ehrlich gesagt nicht zu deinem Code sagen, außer eventuell, dass er schrecklich ist :| .
Hier findest du unter "istream" ggf. noch weitere Informationen zu cin.clear() und sync() : http://www.cplusplus.com/reference/
-
NeeLa schrieb:
muss man für diese Prozedur den Algorithmus immer aus der main in eine Funktion
auslagern oder geht es auch anders ?
Mit cin.clear() werden die Fehlerflags gelöscht und cin.sync() synchronisiert den Eingabepuffer.
Nicht wirklich. Es sync macht tendenziell überhaupt gar nichts. Der Code wird nicht wie gewünscht funktionieren.
Viel mehr möchte ich auch ehrlich gesagt nicht zu deinem Code sagen, außer eventuell, dass er schrecklich ist :| .
Das ist alles, was man dazu zu sagen hat. Der Threadersteller hat diesen Code wohl nicht selber geschrieben sondern will diesen als Vorbild nehmen? Schlechte Idee.