Programm vereinfachen (Variable überschreiben)
-
Ich hab mal eine Frage:
Angenommen ich habe eine Formel (ohne eine Funktion dafür zu programmieren!!), bei der ich eine Variable vorgebe und in dem gleichen Programm im Nachhinein nochmal eine scanf Abfrage zur gleichen Variablen führen lasse.
Bei der Ausgabe der Ergebnisse nimmt er sich nun verständlicher Weise den ersten deklarierten Wert, setzt diesen aber auch für das zweite Ergebnis ein.
Kann man in einem Programm mit einem Befehl dafür sorgen, dass der erste Wert überschrieben o.Ä. wird oder ist eine Art Fallunterscheidung eher angebracht.Also so etwa:
float r,umfang; r = 2; umfang = (2*r*pi); ... printf("%.2f [cm]\n",umfang); ... scanf("%f",&r); printf("%.2f [cm]\n",umfang);/*hier nimmt er logischerweise den Wert vor dem Scan*/
Geht es einfacher oder muss ich tatsächlich ungefähr so fortfahren:
float r1,r2,umfanga,umfangb; r1 = 2; umfanga = (2*r1*pi); umfangb = (2*r2*pi); ... printf("%.2f [cm]\n",umfanga); ... scanf("%f",&r2); printf("%.2f [cm]\n",umfangb)
Es ist hier also nur eine Frage, ob man es sich einfach machen kann, wenn man gerade mal keine Funktion programmiert hat?
-
Die Variable umfang kannst du für die Ausgaben ganz rausschmeissen:
if( 1 != scanf("%f", &r) ) return 1; printf( "Umfang: %f\n", 2*r*pi );
Solltest du sie weiter unten im Programm dennoch brauchen:
if( 1 != scanf("%f", &r) ) return 1; printf( "Umfang: %f\n", umfang = 2*r*pi );
-
Danke Big Brother, aber es war nur ein Beispiel zur grundsätzlichen Thematik.
Weiterführend habe ich noch nicht mit if gearbeitet, was bedeutet, dass in diesem Fall kein if oder eine Schleife oder Ähnliches zulässig sind.
-
Die if Abfrage ist dafür gedacht, das nur gültige Eingaben verarbeitet werden.
Lässt man sie weg und es wird ein Buchstabe eingegeben, so kommt Käse raus.Prinzipiell ändert das aber nichts an deinem Anliegen:
float r, pi = 3.14; scanf("%f", &r); printf( "Umfang: %f\n", 2*r*pi ); scanf("%f", &r); printf( "Umfang: %f\n", 2*r*pi );
-
Big Brother schrieb:
Die if Abfrage ist dafür gedacht, das nur gültige Eingaben verarbeitet werden.
Lässt man sie weg und es wird ein Buchstabe eingegeben, so kommt Käse raus.Prinzipiell ändert das aber nichts an deinem Anliegen:
float r, pi = 3.14; scanf("%f", &r); printf( "Umfang: %f\n", 2*r*pi ); scanf("%f", &r); printf( "Umfang: %f\n", 2*r*pi );
Ok in diesem Fall ist es klar, dass die gewählten Werte für den Radius tatsächlich auch verwendet werden, ich jedoch muss den ersten Wert ja vorgegeben lassen und dann will es nicht so richtig funktionieren.
-
Warum nicht
float r=2.0, pi = 3.14; printf( "Umfang: %f\n", 2*r*pi ); scanf("%f", &r); printf( "Umfang: %f\n", 2*r*pi );