Eingabe von Ziffern begrenzen
-
Hallo, ich bin absoluter Neuling was C++ angeht, mich würde mal interessieren ob es möglich ist die Anzahl der Ziffern zu begrenzen die jemand eingeben kann bevor er auf Enter drückt. Wenn man z.b. sein Geburtsjahr eingeben soll, also maximal 4 Zahlen.
-
also mittels cin geht das nihc.
weiß nich, obs was plattformunabhänigesges gibt. Aber schreib dir doch selber eine routine mittels _kbhit() die dann zählt wie oft was eingeben wurde usw.
-
Danke erstmal für die flotte Antwort, aber wie ich schon sagte bin absoluter Anfänger(quasi bei NULL :))
was ist _kbhit?
Ich steh vor folgendem Problem, ich soll für eine Aufgabe ein Geburtsdatum eingeben z.b. 1984, dies soll dann per Modulus und Divisons Operator untereinander auftauchen, also quasi"Geburtsdatum: 1984
1
9
8
4"Leider habe ich absolut keine Ahnung davon, dass einzige was ich momentan hinbekomme sind einfache Additionen, Multiplikationen etc. halt alles was man am Anfang des steinigen Pfades lernt, leider bin ich bei dieser Aufgabe hier schon am ersten Schritt am verzweifeln.
Gibt es den einen Befehl, welcher quasi alle Eingaben nach der vierten Ziffer ignoriert? Das koennte mir ja vielleicht auch weiter helfen.
-
du kannst das jahr in einen string lesen, und dann nur die ersten 4 zeichen nehmen und in int umwandeln:
std::string jahr; cin >> jahr; int gebjahr = atoi(jahr.substr(0, 4));_kbhit ist eine funktion, die sagt ob eine Taste gdrückt wurde, und diese dann zurück gibt. Damit kannst du dir eine eigene eingabefunktion schreiben
-
Mach es doch so:
#include <iostream> using namespace std; int main() { char jahr[4]; int sojahr; cout << "Jahr eingeben" << endl; cin >> jahr; sojahr = sizeof(jahr)/sizeof(jahr[0]); // berechnet die Stellenzahl von jahr for(int i=0; i<sojahr; i++) { cout << jahr[i] << endl; } return 0; }MFG ARO
-
Erstens ist es imho sinnlos, die Größe des Arrays noch auszurechnen - die ist vier und daran wird sich auch nichts ändern.
Und zweitens ist das sehr unsicher, weil cin nicht kontrolliert, wieviel Platz es hat (und da es am Ende noch ein '\0' anhaängt, wird es garantiert über den verfügbaren Platz hinausschreiben).
@Gast: Wenn du genau vier Zeichen einlesen willst, nimm get() und Konsorten.
-
CStoll schrieb:
Erstens ist es imho sinnlos, die Größe des Arrays noch auszurechnen - die ist vier und daran wird sich auch nichts ändern.
Wir sprechen uns in 8000 Jahren nochmal! :p
-
2038 schrieb:
CStoll schrieb:
Erstens ist es imho sinnlos, die Größe des Arrays noch auszurechnen - die ist vier und daran wird sich auch nichts ändern.
Wir sprechen uns in 8000 Jahren nochmal! :p
*notiert* Wenn ich es einrichten kann, werde ich dran denken
