German Hero Geschrieben 2. Juli 2001 Geschrieben 2. Juli 2001 Ich hab mir nen kleinen Taschenrechner erstellt, und hab hier nen Problem mit ner Endlosschleife. Vielleicht kann mir einer sagen wo mein Denkfehler liegt. /* Kleiner Taschenrechner, der die Grundrechenarten beherscht */ /* erstellt von Buschi am 2.Juli 2001 */ #include <stdio.h> int main() { char weiter; short rechenart; float a, b, erg; printf("\nWollen Sie eine neue Aufgabe starten ? j,n : "); scanf("%c",&weiter); while (weiter =='j') printf("\nAddieren= 1, Substrahieren= 2, Dividieren= 3, Multiplizieren= 4\n"); printf("\nBitte waehlen Sie eine Rechenart : "); scanf("%d",&rechenart); if (rechenart <=0 || rechenart >=5) { printf("\nFalsche Eingabe\n\a"); return 0; } else printf("\nBitte geben Sie die 1. Zahl ein :"); scanf("%g",&a); printf("\nBitte geben Sie die 2. Zahl ein :"); scanf("%g",&; if (rechenart==1) { printf("\nSie haben die Addition gewaehlt\n"); erg=a+b; printf("\nDas Ergebniss lautet : %g\n\n",erg); } else if (rechenart==2) { printf("\nSie haben die Substraktion gewaehlt\n"); erg=a-b; printf("\nDas Ergebniss lautet : %g\n\n",erg); } else if (rechenart==3) { printf("\nSie haben die Division gewaehlt\n"); erg=a/b; printf("\nDas Ergebniss lautet : %g\n\n",erg); } else if (rechenart==4) { printf("\nSie haben die Multiplikation gewaehlt\n"); erg=a*b; printf("\nDas Ergebniss lautet : %g\n\n",erg); } return 0; } Zitieren
BunteKuh Geschrieben 2. Juli 2001 Geschrieben 2. Juli 2001 Na ja...Du setzt die Variable weiter auf "j", gehst in eine schleife while weiter="j" und gibst dem Benutzer in der Scleife keine Möglichkeit weiter auf was anderes zu setzen. Das muß etwa so aussehen: weiter=='j' while (weiter =='j') printf("\nWollen Sie eine neue Aufgabe starten ? j,n : "); scanf("%c",&weiter); .... Zitieren
German Hero Geschrieben 2. Juli 2001 Autor Geschrieben 2. Juli 2001 So, habs jetzt mal so gemacht, ist aber nicht das Ergebnis das ich haben wollte. Hier nochmal in abgeänderter Form: /* Kleiner Taschenrechner, der die Grundrechenarten beherscht */ /* erstellt von Buschi am 2.Juli 2001 */ #include <stdio.h> int main() { char weiter; short rechenart; float a, b, erg; weiter='j'; while (weiter =='j') { /*Beginn der Whileschleife*/ printf("\nWollen Sie eine neue Aufgabe starten ? j,n : "); scanf("%c",&weiter); printf("\nAddieren= 1, Substrahieren= 2, Dividieren= 3, Multiplizieren= 4\n"); printf("\nBitte waehlen Sie eine Rechenart : "); scanf("%d",&rechenart); if (rechenart <=0 || rechenart >=5) { printf("\nFalsche Eingabe\n\a"); return 0; } else printf("\nBitte geben Sie die 1. Zahl ein :"); scanf("%g",&a); printf("\nBitte geben Sie die 2. Zahl ein :"); scanf("%g",&; if (rechenart==1) { printf("\nSie haben die Addition gewaehlt\n"); erg=a+b; printf("\nDas Ergebniss lautet : %g\n\n",erg); } else if (rechenart==2) { printf("\nSie haben die Substraktion gewaehlt\n"); erg=a-b; printf("\nDas Ergebniss lautet : %g\n\n",erg); } else if (rechenart==3) { printf("\nSie haben die Division gewaehlt\n"); erg=a/b; printf("\nDas Ergebniss lautet : %g\n\n",erg); } else if (rechenart==4) { printf("\nSie haben die Multiplikation gewaehlt\n"); erg=a*b; printf("\nDas Ergebniss lautet : %g\n\n",erg); } } /*Ende der Whileschleife*/ return 0; } Zitieren
maddin Geschrieben 2. Juli 2001 Geschrieben 2. Juli 2001 ich würde die abfrage nach einer weitern aufgabe an das ende der schleife setzen. Beispiel: do { /* Schleifenkörper */ printf ( "weiter aufgabe [J/N] ? " ); scanf ( "%c", &weiter ); } while ( weiter == 'j' || weiter == 'J' ); ich hoffe das dir das ein wenig weiterhelfen könnte. das beispiel hat außerdem noch den vorteil, das der benutzer mit großen und kleinem j antworten kann. Zitieren
alligator Geschrieben 2. Juli 2001 Geschrieben 2. Juli 2001 Ausserdem wird er in deinem Beispiel beim ersten Mal gefragt ob er "Rechnen" will, aber wenn er nein sagt muß er trotzdem mindestens einmal Rechen ob er will ode nicht Versuchs doch mit ner do - while Schleife und schon ist dieser Bug auch gekillt cu alligator Zitieren
German Hero Geschrieben 2. Juli 2001 Autor Geschrieben 2. Juli 2001 Ok, dachte ich kann das nur mit while hinbekommen. Bis 'do' hatte ich noch nicht gelesen. Also werd ich erstmal wieder mein Buch aufschlagen Zitieren
Crush Geschrieben 2. Juli 2001 Geschrieben 2. Juli 2001 HEY! Warum so kompliziert! Benutze GOTO und sage einfach: So sollte man das nicht machen mit der Endlosschleife! Und wenn schon dann mit while(true) und break welches die eigentliche echte Endlosschleife ist; Zitieren
gajUli Geschrieben 2. Juli 2001 Geschrieben 2. Juli 2001 Also meine Lieblingsendlosschleife wird ja immer vom Forumsscript mit einem Smiley verstuemmelt (Hmpf!): for (; ; [/code] *gacker* Uli Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.