title image


Smiley Re: Was stimmt an diesem Programm nicht?:-(
Das, was nicht so schön ist, ist nicht das Ausweichen auf das if an sich (es ist ja immer gut, wenn man Ideen hat, wie man etwas lösen kann, wenn ein Weg nicht funktioniert), sondern daß du Code-Duplizierung hast, alle if-Zweige enthalten ähnlichen bzw. identischen Code. Das könntest du noch verbessern, Überlegungen dazu wären:



Eine Zahl x wird in jeder Rechnung erwartet, also muß man das nicht von einer bestimmten "Rechenart" abhängig machen, die Eingabeaufforderung für x kann deshalb vor der if-Anweisung erfolgen. Analog gilt dies für die Frage, ob man Berechnungen wiederholen will, diese Frage kann man immer stellen, egal welche "Rechenart" gewählt wurde, was nichts anderes heißt, daß auch diese Eingabeaufforderung nicht in einen if-Zweig muß. Der neue "Rumpf" für das Programm sieht dann so aus (in den if-Zweigen stehen dann jetzt einige Anweisungen weniger):







do {

printf("\nWaehlen sie Rechenart: \n1 +\n2 -\n3 * \n4 /\n5 sin(x)\n6 exp(x)\n\n");

scanf("%i", &wahl);

printf("\nGeben sie x ein:");

scanf("%lf", &x);



if (wahl == 1) {

...

}

...

...

else {

printf("\nungueltige eingabe");

}



fflush (stdin);

printf("\nNeue Eingabe?\n'1' fuer Ja oder '2' fuer Nein\n");

scanf("%d", &neu);

}

while ( 1 == neu );





Jetzt verbleiben immer noch ein paar gleichartige Aktionen:





printf("\nGeben sie y ein:");

scanf("%lf", &y);





Ein y wird benötigt, wenn "Rechenart" 1 bis 4 ausgeführt wird, das könnte man auch noch mit einer if-Bedingung zusammenfassen...Wenn du weitere solche Überlegungen anstellst, findest du vielleicht noch einiges, was man verbessern kann, das waren jetzt nur die grundsätzlichen Dinge, die dir auch aufgefallen sein müßten. Auch die Ähnlichkeit der printf's fällt ins Auge, aber für den Anfang reicht vielleicht die Beseitigung der mehrfach vorhandenen identischen Code-Teile.



Zu den anderen Sachen hat dir chd_chriss schon alles erklärt...

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: