Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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",&B);

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;

}

Geschrieben

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);

....

Geschrieben

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",&B);

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;

}

Geschrieben

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.

Geschrieben

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 :D

Versuchs doch mit ner do - while Schleife und schon ist dieser Bug auch gekillt :P

cu

alligator

Geschrieben

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;

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...