2017-10-11 1 views
-2

Ich wurde zugewiesen, um ein Programm in C++ zu schreiben, um Benutzereingaben zu nehmen, einige Berechnungen durchzuführen und dann dem Benutzer die Informationen nach der Ausführung von Berechnungen zu präsentieren.While-Schleife oder Funktion für die Eingabeüberprüfung

Die Besonderheiten des Programms werden nicht benötigt, da sich meine Frage speziell auf die Eingangsvalidierung bezieht. Was gilt als besser geeignet/praktischer für die Validierung mehrerer Benutzereingaben?

  1. Mit einer while Schleife in int main() schlecht Eingabe nach jeder cin Anweisung

ODER

zu fangen
  1. Eingang mit 1 while Schleife an eine Funktion zu validiere die Eingabe, gib die Eingabe zurück.

Ich bin ziemlich neu in die Programmierung im Allgemeinen und haben Arbeits mich nur worden in C++ für ein paar Wochen, und meine Instinkte Neuling würde sagen, ein paar while Schleifen in int main() und nennen es einen Tag zu schaffen. Etwas sagt mir, eine Funktion wäre eine bessere Idee, weil, weißt du, Objektorientierung.

Vielen Dank im Voraus. - Wes

+1

relevant sein könnten: https://stackoverflow.com/questions/2075898/good-input-validation-loop-using-cin-c – aug

+0

ist mein Rat sowohl zu versuchen und dann für sich selbst entscheiden . Sie werden viel bessere Erfahrung dadurch gewinnen, dass Sie Hand in Hand sind und sich nicht auf die subjektiven Präferenzen anderer verlassen. Nachdem Sie gesagt haben, dass Sie feststellen können, wenn Sie mehrere verschachtelte Eingaben machen müssen und in der Lage sein möchten, aus diesen herauszukommen, ist die Funktion für die verschachtelten Eingaben besser, da sie das Problem des "Brechens" aus verschachtelten Schleifen vermeidet. –

Antwort

0

Sie haben Recht, dass Sie es in eine Funktion setzen sollten, ist die Kapselung auf lange Sicht immer einfacher (auch wenn Sie nie wieder auf dieses Programm schauen werden), und es ist nützlich, gute Praxis zu halten Egal welches Projekt!

Wenn Sie nicht auf irgendwelche Änderungen an den Eingang der Absicht, und es ist ein Fall von gültiger Eingabe oder ungültiger Eingabe, dann könnte man immer einen bool zurückgeben, so dass Sie so etwas wie

if(inputValidator() == true) 
{ 
    //perform calculations 
} 
else 
{ 
    //Tell the user their input is incorrect and prompt for the input again 
} 
+0

Wie würde ich das tun, ohne eine Variable zu initialisieren, die an 'inputValidator()' übergeben wird?Zum Beispiel möchte ich, dass der Benutzer eine Zahl eingibt, die in "int a" gespeichert wird, aber wenn Logikprüfungen in einer Bedingung wie "if (inputValidator (a) == true)" durchgeführt werden, löst der Compiler ein Fehler, sagen, dass "Int a" nicht initialisiert ist. Fehle ich etwas? –

+0

Wenn Sie die Variable a erstellen, initialisieren Sie sie einfach auf 0 oder etwas anderes Ihrer Wahl. Es würde ungefähr so ​​aussehen. int a = 0; –

0

Making a tun könnten Funktion zur Validierung einer Eingabe ist eine interessante Möglichkeit, das Problem zu lösen. Aber ich bezweifle, dass es auf der Ebene, die du programmierst, nicht notwendig sein wird - seit du gesagt hast, dass du ein Anfänger-Programmierer bist. Wenn Sie nur eine Eingabe auf einmal überprüfen, ist der beste Weg zu gehen nur eine einfache while Wenn Sie mehrere Looks überprüfen, können Sie etwas ähnliches while verwenden, aber verwenden Sie eine for Schleife, um alle Einträge durchlaufen. Viel Glück für Sie!

0

In dem Bereich, den Sie beschrieben haben, ist es in der Regel nicht notwendig, eine Funktion zu erstellen, wie Sie nur alles in int Haupt verklumpen und nicht viel Problem haben.

Wenn Ihre Liste jedoch eine variable Größe hat, können Sie eine for-Schleife basierend auf der Anzahl der empfangenen Eingaben verwenden und einen Ausnahme-Checker für sie erstellen. Wie zum Beispiel:

string myOutput; 
for (int i = 0; i < totalInputs; i++) { 
    cin << myInput; 
    myOutput = exeptionHandle(myInput); 
    cout << myOutput; 
} 
Verwandte Themen