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ängen

    hier 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 abfragt

    mfg



  • 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()
    

Anmelden zum Antworten