?
apollonia schrieb:
Heißt das, dass hinter jeden Case ein break kommen sollte?
Ja, ansonsten werden auch alle anderen case die hinter dem eigentlichem case kommen ausgeführt.
Im Klartext:
`
int i=2;
switch(i)
{
case 1: printf("1!");
case 2: printf("2!");
case 3: printf("3!");
case 4: printf("4!");
default: printf("ooops");
}
`
Hier wäre die Ausgabe "2!3!4!" statt "2!". (Das Ausrufezeichen steht hier nicht für Fakultät sondern ist nur ein Ausrufezeichen.)
zu 3 und 4: In der Aufgabe steht, dass geprüft werden soll, ob eine Produkt- bzw. Kundennummer vorhanden ist und wenn ja, ausgegeben und ansonsten beendet werden soll. Was wäre eine bessere Lösung dafür?
Das Problem ist: Wenn jemand das Programm startet sind produktnr und kundennr uninitialisiert, enthalten also zufällige Werte. Wenn dann jemand die Ausgabe dieser Werte auswählt kommt Blödsinn raus, nämlich je ein zufälliger Wert wenn er >0 ist oder nichts. Da offensichtlich die Nummern positiv sein müssen kannst du ganz oben (Zeile 3) die Variablen mit einem negativen Wert initialisieren, dann ist sicher das am Anfang ein ungültiger Wert (<0) drin ist der nichts ausgegeben wird, bis halt jemand einen gültigen (>0) Wert eingibt.
Nebenbei, einem deiner printfs fehlt ein %, das sollte der Compiler anmeckern. Wenn nicht Warnungen aktivieren! (im GCC: -Wall als zusätzlicher Parameter).
Ich kann mit dem Link nicht so viel anfangen. Was genau verursacht die Fehlermeldung?
Der Link ist eigentlich recht eindeutig. Kurzfassung: "1" ist eine Zeichenkette, 1 ist eine Zahl. Du willst Zahlen, also sind die Anführungszeichen falsch.
Achte auf eine ordentliche Formatierung des Codes, das macht die Fehlersuche (bzw. Vermeidung) einfacher. Der Code in einem case darf beliebig viele Zeilen lang sein.