Fehler bei Buchstabeneingabe in C++

Diskutiere Fehler bei Buchstabeneingabe in C++ im Programmierung Forum im Bereich Programmierung; So hi leute, bin neu hier im Forum. Ich habe über 7 Stunden in Google gesucht, leider ohne erfolg. Folgendes Problem, ich möchte ein Programm in...
#1
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
So hi leute, bin neu hier im Forum.

Ich habe über 7 Stunden in Google gesucht, leider ohne erfolg.

Folgendes Problem, ich möchte ein Programm in C++ Schreiben, dabei sind einige Zeilen für Anwendungen, jede Zeile hat eine id z.B. 1 schreiben, 2 löschen usw...
Dann kommt die meldung bitte eine ID Nummer eingeben, ok kein Problem, habe als Dateityp int genommen, ist aber leider nur für zahlen.
Dann habe ich einen if befehl eingebaut, auch ok .... if (ID < 1 || ID > 19) cout fehler (in kurzform ^^). Kein Problem, aber .... wenn ich nun einen Buchstaben reinhaute. BOOOOOOOMS, entlosschleife (es wird immer und immer wieder die fehler nachricht angezeigt) kein wunder der datentyp ist ja auf int, nur, wie mach ich dass das ich buchstaben und zahlen eintippen kann damit die fehlermeldung auftritt ohne entlosschleife? Bekomm es einfach nicht auf die reihe auch mit char nicht.
Ich möchte das der Befehl so aus sieht.

If (ID < 1 || ID > 19 || ein buchstabe von a -z eingegeben wird)
cout >> "fehler......"

Währe echt super wenn mir jemand dabei helfen könnte, in ganz google gab es keine antwort, ausser din tutorials.de aber die seite scheint down zu sein :wut :flenn

MfG
 
#2
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
38
nimm als eingabetyp char und convertiere diesen dann zu einem int. z.B.

Code:
char eingabe;
int ausgabe;
cin << eingabe;
ausgabe = (int) eingabe;

ModellbahnerTT
 
#3
A

AlienJoker

Gast
Also generell würde ich die abfrage schonmal nicht mit if (sondern case) machen und wenn doch, brauchst du ein else am Ende, also so:

If 1, dann starte schreiben
If 2, dann starte löschen
else geh wieder zur eingabe und sag: das war nix.

Deine If-abfrage kann das einfach nicht ab, wenn sie n char bekommt, ist ja auch klar, also musst du das abfangen wie beschrieben.
 
#4
S

schally

Dabei seit
05.02.2006
Beiträge
1.301
Alter
31
Ort
RLP
Also generell würde ich die abfrage schonmal nicht mit if (sondern case) machen und wenn doch, brauchst du ein else am Ende, also so:

If 1, dann starte schreiben
If 2, dann starte löschen
else geh wieder zur eingabe und sag: das war nix.

Deine If-abfrage kann das einfach nicht ab, wenn sie n char bekommt, ist ja auch klar, also musst du das abfangen wie beschrieben.
hi,
aber mit switch - case kann er ja nichts vergleichen !
Am besten wäre du stellst mal deinen Code online, dann kann jeder sich mal an deinem Code auslassen ;-) , nee mal ernsthaft stell ihn mal online!

evtl wäre es auch sinnvoll auf die ascii zeichen zuprüfen
http://de.wikipedia.org/wiki/ASCII-Tabelle


mfg
schally
 
#5
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Code:

char eingabe;
int ausgabe;
cin << eingabe;
ausgabe = (int) eingabe;
Hi, danke für eure schnelle antwort.

Hab das so gemacht wie oben zitiert, tja, das mit dem char hab ich schon mal gemacht, hab es so eingegeben:
Code:
char ID;
int  intID;

cout << "ID: ";			
cin >> ID;
intID = (int) ID;
das problem in dem fall ist das er jetzt nichtmal mehr die zahlen erlaubt die erlaubt sein müssten (1-20), also was ich damit meine ist das er jetzt die zahlen auch als fehler erkennt.

Code:
if (ID < 1 || ID > 20)
{
SetConsoleTextAttribute(hStdout,FOREGROUND_RED);
cout<< "\n\aDie eingegebene ID Nummer ist ung\201ltig, bitte Versuchen Sie es erneut\n\n";
Was kann ich jetzt machen?
Und wenn wir schon dabei sind... wie kann ich eine bestehende txt datei erweitern? heist, ich habe z.B. x.txt, in der ersten Zeile steht, toller tat...ich möchte jetzt in die x.txt in die nächste zeile den satz. heute ist ein schöner tag... eintragen. Wie mach ich das? denn die lösung die ich verwende überschreibt die bestehende datei.

Code:
{
fstream MytestEditor;
MytestEditor.open("MytestEditor.sql", ios::out);
MytestEditor << "Schöner Tag "<<Dataname<<";" << endl;
MytestEditor.close();
}
Dataname ist deklariert. (also eine cin eingabe).
Danke schonmal...

MfG
 
#6
M

MvSt1234

Dabei seit
24.04.2006
Beiträge
1.060
Alter
45
Ort
Dorsten
char ID;
int intID;

cout << "ID: ";
cin >> ID;
intID = (int) ID;
.
.
if (ID < 1 || ID > 20)
Liegt im farblich - Fettmarkierten evtl Dein Fehler??
Du konvertierst zwar den Eingabetyp von char in int, arbeitest aber mit char weiter:


so müsste es gehen:
if (intID < 1 || intID > 20)
 
Zuletzt bearbeitet:
#7
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Hi, danke für deine antwort, hab echt gedacht das es das sein könnte, aber leider doch nicht :flenn
Sonst noch vorschläge?

MfG
 
#8
M

MvSt1234

Dabei seit
24.04.2006
Beiträge
1.060
Alter
45
Ort
Dorsten
Bin selbst Neuling in c++,
aber mir fällt auf das Dir folgendes vorgeschlagen wurde:

cin << eingabe;

Du aber :

cin >> ID;

geschrieben hast.
Ich weiß nicht ob es was mit Deinem Fehler zu tun hat....
 
#9
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
38
IntiD muss zwischen 48 und 57 ligen und wenn das der Fall ist dann prüfst ob id grösser 1 oder kleiner 20 ist. Wobei es sein kann das er dir zweistelligen Zahlen nicht nimmt weil char ist nur ein Zeichen.

ModellbahnerTT
 
#10
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Hi, genau MvSt1234,
sagmal ModelbauerTT, ist das extra das du die Pfeile falschrum geschrieben hast?

Den es heist ja:

cout << "hi";
cin >> X;

Und was meinst du zwischen 48 und 57?
Ausserdem will ich die die zahlen die kleiner als 1 und grösser als 20 sind verbieten.
Auf jeden fall erkennt er die zahlen die eigendlich erlaubt sein sollten als falsch, auch die 1 - 20. Also einfach alles, Buchstaben und zahlen.

Kann mir jemand auch die frage beantworten mit der Txt datei?
Frage steht in meiner ersten Antwort.

MfG
 
#11
M

ModellbahnerTT

Dabei seit
20.04.2005
Beiträge
3.778
Alter
38
nein das ist ein versehen da ich für diese Sachen im Normalfall printf und scanf verwende.
Kann mir jemand auch die frage beantworten mit der Txt datei?
Du musst die Datei mit dem Append Attribut öffnen. So da wird dann das was neu in die DAtei kommt hinten dran gehangen.


ModellbahnerTT
 
#12
D

ds1984

Dabei seit
18.06.2006
Beiträge
149
Hallo,

ist zwar schon ein Weilchen her dass ich C++ programmiert habe, aber warum nimmst du nicht einfach ein "cin.fail()" um falsche Eingaben abzufangen? Damit ersparst du dir auch die unnötigen (nicht C++ konformen) Typecasts, die hier vorgeschlagen wurden.
Hier hab ich auch noch nen Link der eigentlich genau auf dein Problem zutrifft:
http://www.tutorials.de/forum/c-c/256971-pruefen-ob-eingabe-int-ist.html
 
#13
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Danke für eure antworten, leider hat der link mir nicht weitergeholfen, das Programm spinnt genauso, es macht dann eine endlosschleiffe mit der fehlermeldung das die eingabe nicht erlaubt sei.

wegen dem Append Attribut, kannste mir erklären wie genau?
Hab in Google mal geschaut, aber keine antwort gefunden.

Danke

MfG
 
#15
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Hi, sorry das ich erst jetzt antworte, hatte bis jetzt keine zeit es zu testen, sagmal, kann es sein das den Link den du mir geschickt hast nur für C ist?
Naja egal, habe im Internet ein wenig gesucht und dies gefunden http://www.cpp-entwicklung.de/cpplinux/cpp_main/node5.html
Dort hab ich es gefunden, so, danke trotzdem.
Mein erstes Problem besteht aber weiterhin.:flenn

MfG
 
#16
T

The MIB

Threadstarter
Dabei seit
19.05.2007
Beiträge
7
Hi, muss schon sagen, bin zimmlich enttäuscht, ich dachte ich sei hier in einem Programmier Forum, und trotzdem konnte mir keiner richtig helfen :thumbdown
Egal hab dank eines Freundes eine lösung gefunden, ich sag nur eines: Puffer löschen
Wer jetzt behauptet, achja klar darauf wäre ich auch gekommen.... Vergiss es!!!
Danke an alle die mir gepostet haben und mir helfen wollten.:up

MfG
 
Thema:

Fehler bei Buchstabeneingabe in C++

Fehler bei Buchstabeneingabe in C++ - Ähnliche Themen

  • out of memory fehler

    out of memory fehler: hallo, ich bekomme seit einigen Wochen beim spielen oder bei YouTube videos die fehlermeldung ,,out of memory''. ich habe aber noch genug...
  • BlueScreen - Fehler --> Stillstandcode: IRQL_NOT_LESS_OR_EQUAL

    BlueScreen - Fehler --> Stillstandcode: IRQL_NOT_LESS_OR_EQUAL: Hallo zusammen, da ich mich überhaupt nicht mit Notebooks auskenne, wende ich mich mit meinem Problem an euch. Vllt kann mir ja einer von euch...
  • BlueScreen - Fehler --> Microsoft Storage Port Driver

    BlueScreen - Fehler --> Microsoft Storage Port Driver: Hallo zusammen, da ich mich überhaupt nicht mit Notebooks auskenne, wende ich mich mit meinem Problem an euch. Vllt kann mir ja einer von euch...
  • Bluescreen Fehler

    Bluescreen Fehler: Hallo, Ich kennen mich absolut nicht aus mit Laptops und hoffe jemand kann mir helfen. Ich habe versucht meinen Laptop herunterzufahren und...
  • Definitionsupdates-Fehler 0x8024000b

    Definitionsupdates-Fehler 0x8024000b: Seit Sept.18 bis heute 29 mal diesen Fehlercode im Bereich UPDATES erhalten. Was ist das für ein fehler und wie kann ich diesen korrigieren...
  • Ähnliche Themen

    • out of memory fehler

      out of memory fehler: hallo, ich bekomme seit einigen Wochen beim spielen oder bei YouTube videos die fehlermeldung ,,out of memory''. ich habe aber noch genug...
    • BlueScreen - Fehler --> Stillstandcode: IRQL_NOT_LESS_OR_EQUAL

      BlueScreen - Fehler --> Stillstandcode: IRQL_NOT_LESS_OR_EQUAL: Hallo zusammen, da ich mich überhaupt nicht mit Notebooks auskenne, wende ich mich mit meinem Problem an euch. Vllt kann mir ja einer von euch...
    • BlueScreen - Fehler --> Microsoft Storage Port Driver

      BlueScreen - Fehler --> Microsoft Storage Port Driver: Hallo zusammen, da ich mich überhaupt nicht mit Notebooks auskenne, wende ich mich mit meinem Problem an euch. Vllt kann mir ja einer von euch...
    • Bluescreen Fehler

      Bluescreen Fehler: Hallo, Ich kennen mich absolut nicht aus mit Laptops und hoffe jemand kann mir helfen. Ich habe versucht meinen Laptop herunterzufahren und...
    • Definitionsupdates-Fehler 0x8024000b

      Definitionsupdates-Fehler 0x8024000b: Seit Sept.18 bis heute 29 mal diesen Fehlercode im Bereich UPDATES erhalten. Was ist das für ein fehler und wie kann ich diesen korrigieren...
    Oben