ausgabe innerhalb einer schleife



  • Du solltest printf und cout nicht mischen. Warum nicht cout << atmp; ?



  • @mfk: das ist nur die version mit dem printf...es ist egal ob printf oder cout, hier das ergebnis gleich unsichtbar
    @imhotep:an die bufferung hab ich noch gar nicht gedacht...danke fuer den tip werd es demnaechst gleich mal probieren



  • einer schrieb:

    innerhalb der schleife erfolgt keine ausgabe der funktion printscreen().
    ...

    und meine frage jetzt warum, was mach ich falsch?

    Wenn du innerhalb der Schleife eine Ausgabe willst, mußt du dort auch die printscreen() Funktion aufrufen.

    (btw solltest du besser lokale Variablen verwenden und die notfalls als Parameter übergeben)



  • @cstoll: hab ich ja wohl drinnen gehabt, so ist es ja nicht, habs nur hier vergessen mitzuzuschreiben.will es ja auch lieber mit lokalen variablen machen, aber mit einer lokalen variable hat es noch weniger funktioniert.



  • Das Problem könnte sein, daß du vor jedem Eingabezeichen clearscreen(); aufrufst und damit die bisherige Eingabe (und auch eventuelle Zwischenausgaben mit printscreen();) wieder löschst.

    will es ja auch lieber mit lokalen variablen machen, aber mit einer lokalen variable hat es noch weniger funktioniert.

    Was genau heißt "hat nicht funktioniert"? Lokale Variablen kannst du nicht direkt von außen anfassen, die müßtest du als Parameter an die printscreen()-Funktion übergeben.



  • Das Problem könnte sein, daß du vor jedem Eingabezeichen clearscreen(); aufrufst und damit die bisherige Eingabe (und auch eventuelle Zwischenausgaben mit printscreen();) wieder löschst.

    mmmmh...das glaub ich nicht, da die funktion clearscreen() ab beginn aufgerufen wird und die ausgabe nach dem erfassen des neuen zeichens erfolgt.

    die müßtest du als Parameter an die printscreen()-Funktion übergeben

    das ist mir auch klar, aber die parameter an die funktion zu uebergeben hat die ausgabe insofern ein klein wenig verwirrend gestaltet, als dass sonderzeichen ausgegeben wurden. erst mit der globalen variable hat die ausgabe funktioniert (nicht mit printscreen() innerhalb der schleife, weil das funkt derzeit sowieso nicht ;), sondern bei

    cout << "Eingabe:" << atmp;

    )



  • Dann zeig doch mal deine Schleife mit dem printscreen()-Aufruf, die nicht so funktionierte, wie sie sollte.

    @lokale Variable: In welchem Block hattest du die definiert? Wenn das innerhalb der do-while-Schleife war, wird die Variable bei jedem Durchlauf neu initialisiert.



  • @cstoll: das printscreen() war nach der zuweisung atmp[i] = a drinnen.
    und die definition wahr wohl ausserhalb der schleife in der main funktion



  • So etwa?

    do{   
        clearscreen();       
        cout << "Eingabe:" << atmp; 
        initscreen();   
        a = getch();                   
        endwin();       
        atmp[i] = a;
        printscreen();
        i++;       
    }while(i < 10);
    

    Dann ist es ja kein Wunder - du schreibst etwas und bevor du Zeit hast, es zu lesen, startet ein neuer Schleifendurchlauf und als erstes wird mit clearsreen() der Bildschirm gelöscht. Trag' den printscreen()-Aufruf mal an der Stelle ein, wo du "cout<<"Eingabe:"<<atmp;" stehen hast.

    PS: Was genau macht eigentlich endwin();

    @lokale Variable: Ohne entsprechenden Code kann ich nicht wirklich nachvollziehen, was du gemacht hast und was da schiefgelaufen sein könnte.



  • @all: des raetsel loesung ist gefunden
    imhotep tip mit dem leeren des puffers ists gewesen kombiniert mit einer leichten abaenderung von cstoll's hinweis zwecks dem aufruf von clearscreen().

    danke fuer die hinweise


Anmelden zum Antworten