Polo Geschrieben 22. April 2003 Geschrieben 22. April 2003 Ich habe ein Programm geschrieben, wo man mehrere Zahlen eingeben soll. Wenn ich dort Buchstaben oder Zeichen eingebe, soll eine Fehlermeldung angezeigt werden. Es sollen also alle Zahlen, egal wie Große, außer Buchstaben und Zeichen akzeptiert werden. Kann mir da jemand helfen?
robotto7831a Geschrieben 22. April 2003 Geschrieben 22. April 2003 Hallo, ich nehme jetzt mal an, Du hast die Eingabe in einem char drin. Dann wanderst Du Zeichen für Zeichen durch den char und wandelst den char[position x] in einen int-Wert um. Wenn der int-Wert zwischen 48 und 57 liegt, dann ist es eine Zahl zwischen 0 und 9. Frank
Polo Geschrieben 23. April 2003 Autor Geschrieben 23. April 2003 Es ist ein Programm, wo man eine Zahl erraten soll, die vorher durch den Zufallsgenerator ausgesucht wurde. Die Variable hat bei mir den Datentyp integer und nicht char. Es soll ja eine Fehlermeldung ausgeben werden, wenn man einen Buchstaben eingibt.
robotto7831a Geschrieben 23. April 2003 Geschrieben 23. April 2003 Wenn Du die Zahl, die der Benutzer eingibt, in ein char einlesen läst, dann ist doch Dein Problem gelöst. Frank
Polo Geschrieben 23. April 2003 Autor Geschrieben 23. April 2003 Da ich mich noch nicht ganz so gut mit Programmieren auskenne, weiß ich jetzt nicht ganz so genau, wie du das meinst. Wenn ich es als char einlese, dann erkennt er doch erst recht Buchstaben, aber dann keine Zahlen mehr. Könntest du mir das Ganze nochmal etwas genauer erklären?
Klotzkopp Geschrieben 23. April 2003 Geschrieben 23. April 2003 Wenn du die Eingabe gleich als Zahl einlesen lässt, ist es schwieriger, eine Fehleingabe überhaupt zu erkennen. Wenn du die Eingabe als Zeichenkette behandelst, kannst du jedes Zeichen darauf prüfen, ob es eine Ziffer ist, und entsprechend reagieren.
Polo Geschrieben 23. April 2003 Autor Geschrieben 23. April 2003 Ich habe der Variablen, die für die Zahleneingabe zuständig ist, den Datentyp char zugeordnet und string statt integer genommen. Das Programm erkennt jetzt aber keine Zahlen mehr. Bei deinem Vorschlag stand noch etwas mit prüfen, ich denke mal das habe ich damit jetzt noch nicht erreicht. Kann mir aber auch nichts unter Prüfen vorstellen. Das habe ich noch nie gemacht.
Klotzkopp Geschrieben 24. April 2003 Geschrieben 24. April 2003 Ein char ist nur ein einzelnes Zeichen, das wird dir nicht weiterhelfen. Verwendest du C oder C++? Wie liest du ein?
Polo Geschrieben 25. April 2003 Autor Geschrieben 25. April 2003 Ich verwende C und lese mit scanf ein.
robotto7831a Geschrieben 25. April 2003 Geschrieben 25. April 2003 Um die Sache mal abzukürzen, hier ist ein Beispiel. #include <stdio.h> #include <conio.h> #include <string.h> char eingabe[80]; int zahl = 0, i = 0, laenge = 0; int main(int argc, char* argv[]) { printf("Bitte geben Sie Zahlen ein: "); scanf("%s", &eingabe); laenge = strlen(eingabe); for (i=0; i<laenge; i++) { zahl = eingabe[i]; printf("Zahl %i: %i\n", i, zahl); if (zahl >= 48 && zahl <= 57) printf("Das war eine Zahl.\n"); else printf("Sie haben einen Buchstaben eingegeben.\n"); } getch(); return 0; }[/code] Frank
WhiteRabbit2003 Geschrieben 26. April 2003 Geschrieben 26. April 2003 if isdigit(zahl) statt: if (zahl >= 48 && zahl <= 57) sollte weit mehr ungünstige Konstellationen abdecken...
Fidayn Geschrieben 7. Oktober 2008 Geschrieben 7. Oktober 2008 Wie wäre es mit einem Switch? Und dann 10 case mit 0 + 1-9, default: (Fehlermeldung) break;
Klotzkopp Geschrieben 7. Oktober 2008 Geschrieben 7. Oktober 2008 Du hast es vermutlich nicht bemerkt, aber du hast da einen fast fünfeinhalb Jahre alten Thread ausgegraben. :old
Fidayn Geschrieben 7. Oktober 2008 Geschrieben 7. Oktober 2008 Du hast es vermutlich nicht bemerkt, aber du hast da einen fast fünfeinhalb Jahre alten Thread ausgegraben. :old fünfeinhalb Jahre? verdammt das hat sammlerwert, warum löscht ihr nich all jahrhundert mal das alte zeug?
TDM Geschrieben 8. Oktober 2008 Geschrieben 8. Oktober 2008 fünfeinhalb Jahre? verdammt das hat sammlerwert, warum löscht ihr nich all jahrhundert mal das alte zeug? Wenn ich bei google was such, was andere vielleicht vor 5 Jahren mal gelößt haben, dann find ichs nicht, weils gelöscht ist.
Klotzkopp Geschrieben 8. Oktober 2008 Geschrieben 8. Oktober 2008 Damit hier keine Metadiskussion entsteht, mache ich den Thread zu. Warum wir alte Threads nicht löschen, hat TDM ja beantwortet.
Empfohlene Beiträge