Brauche hilfe bei C Programmierung

Home Foren METAL HAMMER’s Ballroom Mediapit Brauche hilfe bei C Programmierung

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 15)
  • Autor
    Beiträge
  • #13075  | PERMALINK

    Bloodscythe

    Registriert seit: 17.12.2004

    Beiträge: 2,829

    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.de
    #966039  | PERMALINK

    Errraddicator

    Registriert seit: 18.10.2004

    Beiträge: 17,759

    Es 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.

    --

    #966041  | PERMALINK

    Bloodscythe

    Registriert seit: 17.12.2004

    Beiträge: 2,829

    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…

    --

    #966043  | PERMALINK

    Evilution

    Registriert seit: 10.12.2003

    Beiträge: 5,285

    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.

    --

    #966045  | PERMALINK

    Bloodscythe

    Registriert seit: 17.12.2004

    Beiträge: 2,829

    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?

    --

    #966047  | PERMALINK

    Errraddicator

    Registriert seit: 18.10.2004

    Beiträge: 17,759

    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

    --

    #966049  | PERMALINK

    Bloodscythe

    Registriert seit: 17.12.2004

    Beiträge: 2,829

    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

    --

    #966051  | PERMALINK

    Errraddicator

    Registriert seit: 18.10.2004

    Beiträge: 17,759

    Bloodscythe
    Hm mist nee, mache C trotzdem danke

    Dann musste mal nach der Funktion „atoi“ gucken.
    Damit kann man char*´s in int´s umwandeln. 😉

    --

    #966053  | PERMALINK

    Bloodscythe

    Registriert seit: 17.12.2004

    Beiträge: 2,829

    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..

    --

    #966055  | PERMALINK

    Errraddicator

    Registriert seit: 18.10.2004

    Beiträge: 17,759

    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.

    --

    #966057  | PERMALINK

    Bloodscythe

    Registriert seit: 17.12.2004

    Beiträge: 2,829

    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

    --

    #966059  | PERMALINK

    tsOrn

    Registriert seit: 01.01.2006

    Beiträge: 4,529

    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 messen
    #966061  | PERMALINK

    Errraddicator

    Registriert seit: 18.10.2004

    Beiträge: 17,759

    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.

    --

    #966063  | PERMALINK

    Bloodscythe

    Registriert seit: 17.12.2004

    Beiträge: 2,829

    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

    --

    #966065  | PERMALINK

    Errraddicator

    Registriert seit: 18.10.2004

    Beiträge: 17,759

    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:

    --

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 15)

Du musst angemeldet sein, um auf dieses Thema antworten zu können.