Wie man Benutzereingaben in eine do/while-Schleife?
Ich habe versucht, die do /while-Schleife fragte ich und Feste in meine eine Funktion in int main
zu ermöglichen, das gesamte Programm erneut ausgeführt werden, wenn der Benutzer dies wünscht, aber es ist erneutes ausführen des Programms, ohne auf Benutzereingaben warten.
int main()
{
int spoolnumber = 0; //Number of spools to be ordered
float subtotalspool = 0; //Spool sub total
float shippingcost = 0; //Shipping cost
float totalcost = 0; //Total cost
char type = 'n';
do {
instruct(); //Print instructions to user
spoolnumber = spoolnum(); //calculate and store number of spools
subtotalspool = stotalspool(spoolnumber); //Calculate subtotal
shippingcost = shipcost(subtotalspool); //Calculate subtotal
totalcost = tcost(subtotalspool, shippingcost); //Calculate final total
//Print final output
results(spoolnumber, subtotalspool, shippingcost, totalcost);
cout << "\n" << " Would you like to run the program again? [y/n]";
}
while (type != 'y');
return 0;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht Hinzugefügt, beliebigen code auf Benutzereingaben akzeptieren. An der Unterseite der Schleife, versuchen, das Lesen eines Zeichens aus
cin
intype
.Außerdem müssen Sie eventuell Spülen, um die Ausgabe von
cout
ersten, bevor Sie dem Benutzer die Eingabe voncin
.Haben Sie nicht Lesen die Eingabe von dem Benutzer. Sie könnte einfach tun:
Aber Sie wirklich wollen zu überprüfen, dass Sie ein Erfolg ist auch nicht z.B. eof oder anderen Fehler, ansonsten ist es noch möglich, eine unendliche Schleife, wenn der Benutzer gedrückt Strg-D für das Beispiel.
Überprüfen, ob es gelingt:
Können Sie tatsächlich Teil der Schleife Zustand:
Den Rat von Xeo über den Aufruf
cin.ignore()
ist wichtig, da Sie fast immer am Ende mit mehr als nur einerchar
im Wert von Eingang.\n
newline drücken Sie die EINGABETASTE. Denken wieder auf, ja, das könnte Zählung als zusätzliche Eingabe-Zeichen. 🙂\n
und nur\n
extra, wenn keine extra Tasten gedrückt werden, aber so sind die Wiesel-Formulierung wurde bestimmt als back-Abdeckung 🙂Gut, Sie niemals bitten, für die Eingabe, tun Sie? Fügen Sie den folgenden nach der
cout
Linie:Nun müssen Sie noch die üblichen Tests, wenn die Eingabe gültig war, an alle usw., aber das sollte erhalten Sie gehen.
Musst du eine
cin
um das abrufen von Benutzer-Entscheidung:Beispiel:
Denn du bist nicht aufgefordert, die Benutzer zur Eingabe.
Du wirst erfolgreicher sein, wenn Sie versuchen, etwas wie: