003
22.06.2015, 02:15 Uhr
Hans
Library Walker (Operator)
|
Hi,
das hab ich mir schon fast gedacht. Wenn Du cin mit dem Datentyp int verwendest brauchst Du da eigentlich gar nichts mehr zu überprüfen, weil cin Dir die Arbeit schon abnimmt.
Wenn Du es trotzdem machen willst, wird es recht umständlich, denn dann musst Du in einer Schleife folgende Dinge tun: * ein Zeichen einlesen, etwa mit cin.get(c), * Wenn es das Zeichen für '\n' war, wurde die Enter- oder Returntaste gedrückt, dann die Schleife ohne Fehlermeldung abbrechen; * '+' ignorieren, denn die Zahl +1 ist die selbe wie 1 * '-' als erkennung für negative Zahlen lassen wir mal weg; ich erwähne es hier nur der Vollständigkeit halber. * überprüfen, ob das Zeichen eine Ziffer ist oder nicht, (mit isdigit(c) aus <cctype> ) * Wenn an dieser Stelle kein Ziffernsymbol eingegeben wurde, die Schleife mit einer Fehlermeldung abbrechen; isdigit liefert dann 0 (null). * wenn es ein Ziffernsymbol ist, also '0'..'9', dann dieses Symbol in den entsprechenden Zahlenwert konvertieren (ziffer=c-'0') und * die so erhaltene Ziffer entsprechend ihrer Wertigkeit der einzugebenden Zahl zuordnen. (zahl=zahl*10+ziffer)
Wenn ich Dich jetzt reichlich verwirrt habe, dann war das nur zum Teil Absicht, weil der Vorgang im Deteil betrachtet so umfangreich ist, dass er sich mit wenigen Worten nur in so einer abstrakten Form ausdrücken lässt. Das ganze funktioniert so auch erst mal nur mit positiven Zahlen. Wenn du auch negative Zahlen berücksichtigen willst, wird es noch etwas komplizierter.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 22.06.2015 um 02:16 Uhr von Hans editiert. |