Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

26.08.2013, 17:43

Gerade die buchstaben meine ich. Sie funktionieren nicht. Dachte dann char statt float, weil er durch das float eventuell buchstaben ignoriert. Aber wenn ich char eingebe und dann nen buchstaben werden mir pro verschiedener angabe verschiedene zahlenwerte ausgespuckt.

" du bist x zu schnell, langsam "

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

12

26.08.2013, 18:03

Mhh. Implizites Casten des Compilers. Frag vorher ab, ob ein int eingegeben wurde.
42 / Pi = 13,37

13

26.08.2013, 18:38

Casten weil int und float? Hab nun alles auf int. Der float war nur ein test ob ichs kapiert habe.

14

27.08.2013, 21:41

Brauche immernoch hilfe hierbei

15

29.08.2013, 23:32

Das Problem ist, dass cin immer nur ein Zeichen abfragt und in deine Variable Geschwindigkeit speichert. Dabei landen auch Buchstaben dort, allerdings mit dem entsprechenden Wert aus der ASCII-Tabelle (z.B. für 'a' bekommst du 97 bzw. 0x60). Daher musst du mit dieser Variante auch jedes einzelne Zeichen der Zahl in einer Schleife abfragen. Hier mal eine Erkärung dazu: http://www.cpp-tutor.de/cpp/le04/cin.html

Dein else-Zweig kann auch niemals aufgerufen werden, da die vorherigen Bedingungen alle möglichen Fälle abdecken; also kleiner, gleich und größer. Daher wird niemand die Idiot-Meldung sehen können ;)

Da ich die cin-Funktionen nicht mag greife ich eher lieber immer zu den scanf-Funktionen. Hier gibt es mehr Infos darüber: http://www.cplusplus.com/reference/cstdio/scanf/

Damit kannst du direkt die Eingabe formatieren und bekommst die komplette Zahl mit einer Abfrage. Bin mir gerade nur nicht sicher, wie die Funktion bei einer falschen Eingabe reagiert. Ich habe mal deinen Beispielcode entsprechend angepasst, ist aber nicht getestet.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main ()
{
    const int tempolimit = 100;
    int Geschwindigkeit;

    printf("Hier sind %d km/h erlaubt\n", tempolimit);
    printf("Wie schnell sind Sie gefahren?\n");
    scanf ("%d",&Geschwindigkeit);


    if (Geschwindigkeit == tempolimit)
     printf("Nochmal Glueck gehabt, Junge..\n");
    else if (Geschwindigkeit < tempolimit)
     printf("Du bist %d km/h unter dem Tempolimit gefahren. Beruhig dich Junge..\n", tempolimit - Geschwindigkeit);
    else if (Geschwindigkeit > tempolimit)
     printf("Du bist %d km/h zu schnell gefahren. Das gibt maechtig Probleme, Junge..\n", Geschwindigkeit - tempolimit);
    return 0;
}

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

29.08.2013, 23:35

Da ich die cin-Funktionen nicht mag greife ich eher lieber immer zu den scanf-Funktionen.

std::cin hat gegenüber scanf() aber wesentliche Vorteile, wie z.B. dass es typsicher ist... ;)

Werbeanzeige