Home › Foren › METAL HAMMER’s Ballroom › Mediapit › Brauche hilfe bei C Programmierung
-
AutorBeiträge
-
Habe int und double Variablen. Der Benutzer soll in einem Menü halt zahlen eingeben. Das klappt auch soweit alles, das Problem ist wenn der Benutzer anstatt Zahlen Buchstaben eingibt. Dann kommt ne Endlosschleife raus. Kennt jemand den Befehl der das verhindert? Ich hatte ihn letztens nur finde den Zettel nicht mehr. Es muss halt kontrolliert werden, ob der eingegebene Wert int oder double entspringt und wenn er es nicht tut, dann soll nichts passieren.
--
Highlights von metal-hammer.deEs gibt doch sone Funktion atoi oder so ähnlich…
Auf jeden Fall wandelt die einen String in eine Zahl um.Damit müssteste das überprüfen können.
Wenn Du C++ programmierst, kannste auch nen try… catch Block verwenden.
--
ErrraddicatorEs gibt doch sone Funktion atoi oder so ähnlich…
Auf jeden Fall wandelt die einen String in eine Zahl um.Damit müssteste das überprüfen können.
Wenn Du C++ programmierst, kannste auch nen try… catch Block verwenden.
hm das ist nicht ganz das was ich suche, das war ein zwei bis drei zeilen langer befehl…
--
ErrraddicatorWenn Du C++ programmierst, kannste auch nen try… catch Block verwenden.
Komme zwar aus der Javaecke, aber würde ich auch Vorschlagen.
@bloodscythe: Wenn dieser Befehl nicht ausdrücklich gefordet ist, würde ich es auch lieber so machen. C ist eigentlich ziemlich durch. Selbst als Einstiegssprache. An Hochschulen wird idR. mit Java anfangen. Da bringt Dir so sprachenspezifisches Zeug nicht viel.
--
Evilution
Errraddicator
Wenn Du C++ programmierst, kannste auch nen try… catch Block verwenden.
Komme zwar aus der Javaecke, aber würde ich auch Vorschlagen.
@bloodscythe: Wenn dieser Befehl nicht ausdrücklich gefordet ist, würde ich es auch lieber so machen. C ist eigentlich ziemlich durch. Selbst als Einstiegssprache. An Hochschulen wird idR. mit Java anfangen. Da bringt Dir so sprachenspezifisches Zeug nicht viel.
Kann mir einer ein Beispiel für diese Lösung geben von der ihr sprecht?
--
Das funktioniert aber nur wenn Du wirklich C++ und nich C programmiertst!
code
// … sonstiger Code
try
{
// deine Umwandlung der Eingabe in einen Integer/Double
}
catch(…)
{
// statt cout hier verwenden was Du willst, um die Fehlermeldung darzustellen
cout << "Ungültige Eingabe"; } // ... sonstiger Code So in etwas--
Errraddicator
Das funktioniert aber nur wenn Du wirklich C++ und nich C programmiertst!
code
// … sonstiger Code
try
{
// deine Umwandlung der Eingabe in einen Integer/Double
}
catch(…)
{
// statt cout hier verwenden was Du willst, um die Fehlermeldung darzustellen
cout << "Ungültige Eingabe"; } // ... sonstiger Code So in etwas Hm mist nee, mache C trotzdem danke--
Bloodscythe
Hm mist nee, mache C trotzdem dankeDann musste mal nach der Funktion „atoi“ gucken.
Damit kann man char*´s in int´s umwandeln. 😉--
if(!cin) //Wenn die Eingabe keine Zahl ist..
{
cin.clear(); //Verhindert eine Endlosschleife bei der Eingabe von Buchstaben
}
cin.ignore( cin.rdbuf()->in_avail() );Das ist der Befehl den ich meinte, aber seltsamerweise klappts bei mir jetz immernoch nicth, beim meinem klassenkamerad klappt das..
--
Bloodscytheif(!cin) //Wenn die Eingabe keine Zahl ist..
{
cin.clear(); //Verhindert eine Endlosschleife bei der Eingabe von Buchstaben
}
cin.ignore( cin.rdbuf()->in_avail() );Das ist der Befehl den ich meinte, aber seltsamerweise klappts bei mir jetz immernoch nicth, beim meinem klassenkamerad klappt das..
Der fragt doch nur auf Leere ab, oder?
Ausserdem müsste das trotzdem C++ sein, da Du (soweit ich informiert bin) bei C kein cin oder cout sond printf und noch irgendson Effekt hast 😉
Also müsste das auch mit den Try…Catch gehen.
--
Errraddicator
Bloodscythe
if(!cin) //Wenn die Eingabe keine Zahl ist..
{
cin.clear(); //Verhindert eine Endlosschleife bei der Eingabe von Buchstaben
}
cin.ignore( cin.rdbuf()->in_avail() );Das ist der Befehl den ich meinte, aber seltsamerweise klappts bei mir jetz immernoch nicth, beim meinem klassenkamerad klappt das..
Der fragt doch nur auf Leere ab, oder?
Ausserdem müsste das trotzdem C++ sein, da Du (soweit ich informiert bin) bei C kein cin oder cout sond printf und noch irgendson Effekt hast 😉
Also müsste das auch mit den Try…Catch gehen.
Naja so langsam glaube ich das unsre lehrer und ne mischung aus c un c++ bebringt. Aber den Befehl haben wir selbst gefunden und er funktioniert, zumindest wenn man mit dem microsoft visiual studio arbeitet. Mit meinem Compiler klappt das irgendwie nicht
--
BloodscytheHabe int und double Variablen. Der Benutzer soll in einem Menü halt zahlen eingeben. Das klappt auch soweit alles, das Problem ist wenn der Benutzer anstatt Zahlen Buchstaben eingibt. Dann kommt ne Endlosschleife raus. Kennt jemand den Befehl der das verhindert? Ich hatte ihn letztens nur finde den Zettel nicht mehr. Es muss halt kontrolliert werden, ob der eingegebene Wert int oder double entspringt und wenn er es nicht tut, dann soll nichts passieren.
schon mal mit Convert.ToInt32 oder Convert.ToDouble probiert?
--
denken statt messenBloodscythe
Naja so langsam glaube ich das unsre lehrer und ne mischung aus c un c++ bebringt. Aber den Befehl haben wir selbst gefunden und er funktioniert, zumindest wenn man mit dem microsoft visiual studio arbeitet. Mit meinem Compiler klappt das irgendwie nichtKannst Du denn den überhaupt kompilieren?
Vielleicht is dass ja auch ein MS-Spezifischer Befehl.--
Errraddicator
Bloodscythe
Naja so langsam glaube ich das unsre lehrer und ne mischung aus c un c++ bebringt. Aber den Befehl haben wir selbst gefunden und er funktioniert, zumindest wenn man mit dem microsoft visiual studio arbeitet. Mit meinem Compiler klappt das irgendwie nicht
Kannst Du denn den überhaupt kompilieren?
Vielleicht is dass ja auch ein MS-Spezifischer Befehl.Er bringt keine Fehlermeldung, garnix, läuft sonst einwandfrei. Habe das Programm einem kollegen zum kompilieren gegeben und da läuft es so wie es soll, ohne Endlosschleife
--
Bloodscythe
Er bringt keine Fehlermeldung, garnix, läuft sonst einwandfrei. Habe das Programm einem kollegen zum kompilieren gegeben und da läuft es so wie es soll, ohne Endlosschleife😕
Das is natürlich geil…
Dann weiß ich leider auch nich weiter…Mein Vorschlag mit dem Try…Catch-Block steht übrigens immer noch :mrgit:
--
-
Du musst angemeldet sein, um auf dieses Thema antworten zu können.