Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Switch Anweisung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Switch Anweisung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Switch Anweisung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe folgendes Programm geschrieben um einfach zu üben.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
 #include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
int i;
bool fehler=false, wiederholung=false;
char a;
do
{
do
{
puts("Geben Sie eine Zahl zwischen 1 und 30 ein";);
scanf("%d",&i);
if(i<1||i>30)
{
puts("Diese Zahl ist ungültig!";);
fehler=true;
}
else
{
fehler=false;
}
}
while(fehler);

while(i>0)
{
putchar('a');
i--;
}
puts("Das war lustig.nnNicht wahr?";);
puts("Willst du das nochmal wiederholen? (j/n)";);
scanf("%c",a);
switch(a)
{
case'j' : wiederholung=true;
break;
case'n' : wiederholung=false;
break;
default : puts("Egal was du eingegeben hast, es passt mir nicht!nIch werde mich jetzt selbst beenden. Ciao!n";);
}
}
while(wiederholung);
return 0;
}


Es soll so oft "peep" machen wie der User eingegeben hat (zwischen 1 und 30 mal).
Wenn die eingegegebene Zahl nicht zwischen 1 und 30 liegt soll er einen Fehler melden und nochmal bitten die Zahl einzugeben.
Wenn das "Peep" "Peep" fertig ist soll der User gefragt werden, ob er das wiederholen möchte.
Ich habe versucht das mit switch zu machen, weil ich genau das üben wollte. (es würde sicher auf mit IF gehen)

Nun zu der Frage:
Wenn ich das ganze Schritt für Schritt debugge, dann springt er zwar in die switch Anweisung, aber immer zu "default" und das will ich ja nicht.

Was habe ich bei der switch Anweisung falsch gemacht?
Lg matze
14.11.2012 16:53 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

a ist undefiniert und es wundert mich, dass das Programm nicht abstürzt.

In Zeile 34 musst du die Adresse von a übergeben und nicht a.

Also so:
code:
1:
2:
3:
scanf("%c",&a);


VG,

Karlito
14.11.2012 17:32 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja das Programm hatte sich auch irgendwie aufgehängt... Also es kam jedenfalls ein Fehler.....
Aber selbst mit
code:
1:
2:
3:
scanf("%c",&a);

springt er in den defaultZweig.
Ich kann nichtmal mein "a" (also meine antwort) eingeben.
14.11.2012 17:37 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
HueHang
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
scanf(" %c",&a);

also mit einem Leerzeichen vor "%c", dann funktioniert es.
14.11.2012 17:41
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von HueHang
code:
1:
scanf(" %c",&a);

also mit einem Leerzeichen vor "%c", dann funktioniert es.


DANKE
Aber kannst du (oder jmd anders) mir evtl auch sagen warum ich da plötzlich ein "Leerzeichen" machen muss?
Weil erklären kann ICH mir das nicht.
unglücklich

Lg Matze
14.11.2012 17:46 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
HueHang
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hier ist eine kleine Erklärung:
http://www.linuxforums.org/forum/program...html#post355499
14.11.2012 18:06
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Switch Anweisung