komm irgendwie nicht weiter bei rekursiver FKT kann mir wer helfen
-
ich habe hier eine eingabe fkt für eine matrix
in die wollte ich noch eine fehlerabfrage einbauen,indem ich die fkt rekursiv mache,leider klappt das nicht so wie vorgestellt kann mir eventuell wer helfen?
ich bekomme keine fehler,das prog bleibt jedoch nach eingabe der ersten zeile hängenhier die eingabe fkt
template<class T> void eingabe(P_matrix<T> &matrix) { int groesse; newline nz; int help=1; fflush(stdin); //Tastaturbuffer leeren while(help != 0) { string line; getline(cin, line); //einlesen bis ENTER gedrückt wird stringstream sstr; sstr << line; //werte umkopieren double wert; vector<T> zeile; while (sstr >> wert) //Werte aus Stream auslesen { zeile.push_back(wert); //Werte an Vektor anhängen } for(int x=0;x=1;x++) //Fkt ermittelt die größe der ersten Zeile { groesse=zeile.size(); } if(groesse != zeile.size()) { cout<<"Die Zeile müssen alle gleiche länge haben!"<<endl; cout<<"Bitte geben Sie die Zeile erneut ein!"<<endl; return eingabe(matrix); } else { for(int z=0;z<zeile.size();z++) { matrix>>zeile[z]; //Werte in Matrix schreiben } matrix>>nz; //neue zeile in matrix erstellen help=zeile.size(); //größe des Vectors in dem die werte gespeichert werden umspeichern } } }kann man das eventuell noch anders lösen
ich wolltes halt so machen,das wenn die nachfolgende zeile kleiner oder größer ist die fkt die wert nicht erst in die matrix schreibt sondern gleich neu abfragtmfg
-
hat sich erledigt habs hinbekommen
sry fürs unnötige thread öffnen
-
Btw: fflush(stdin) sollte man besser nicht aufrufen, das Verhalten ist undefiniert.
-
was kann ich dann machen um den buffer zu leeren?weil wenn ich das nicht tue wird die eingabe irgendwie übersprungen...ich denke mal weil sie nachdem ich ne auswahl in meinem menü gemacht habe sofort ein zeilenende zu fressen kriegt u somit gleich beendet wird
noch ne frage falls die hier wer findet(is nur kosmetischer natur)
wie kann ich die zuletzt auf dem bildschirm eingegebene zeile wieder löschen(will ich für die fehlerabfrage wissen,da sonst immer die werte stehen bleiben(in der konsole))
mfg
-
wegen flush
irgendeiner von den usern hier im forum hat in siener signature folgendes stehn:
"Thou shall not fflush cin!"
oder so ähnlich, da könnte man mal drüber nachdenken was das heisst
-
Braineater schrieb:
was kann ich dann machen um den buffer zu leeren?
probier mal
cin.ignore()oder
cin.clear()