Hi,
Du Musst noch den Tastaturpuffer leeren. Dies machst du mit fflush( stdin );
dann muss man aber tatsächlich jedes Zeichen einzeln eingeben, dann die Eingabetaste drücken, dann das nächste. Ich bin davon ausgegangen, dass turgar die Ziffern der Reihe nach eingibt und erst zum Schluss die Eingabetaste drücken möchte - und hatte mich daher über das seltsame von ihm beschriebene Verhalten gewundert.
Dann kannst du eine Variable nicht 9 mal deklarieren:
»» while(counter<9)
»» {
»» int pos=-1;
> ▲▲▲
Doch, ein C++-Compiler erlaubt das. In C++ können am Anfang jedes neuen Anweisungsblocks (also nach fast jeder öffnenden geschweiften Klammer) neue Deklarationen stehen. Das ist einer der Punkte, in denen C++ zur Schlampigkeit verleitet - in "reinem" C müsste man alle Deklarationen am Anfang des Funktionsblocks notieren.
> Zudem ist dieser Schritt sinnlos, da du ihn eh wieder überschreibst, und ~~~c
dazwischen diese Variable nicht verwendest:
> »» pos = ((int)readChar) - 48;
Zumindest die Zuweisung eines Wertes ist an der Stelle sinnlos. Das gilt aber auch für die Zuweisung readChar = NULL aus turgars Originalcode. Schädlich ist das aber nicht ...
Bei einer Fest definierten Anzahl an Durchläufen macht sich eine For-Schleife am besten:
for( counter=0; counter<9; counter++ )
{
//...
}
\*unterschreib\*
> Zudem fehlt noch das Error-Handling. Was, wenn der User keine Zahl eingibt? Dann kann das Programm anstürzen oder zumindest Fehlerhaft arbeiten.
> Prüfe deswegen, ob der eingegebene Wert eine Zahl ist.
Du meinst Ziffer, nicht Zahl.
Ansonsten: ACK.
Was die fehlende Fehlerbehandlung für Folgen hat, können wir aber nicht abschätzen, da wir nicht wissen, was mit dem Wert von pos noch passiert.
So long,
Martin
--
Die letzten Worte der Challenger-Crew:
Lasst doch mal die Frau ans Steuer!