Subtraktion
-
Guten Abend,
ich habe hier ein kleines Problem und zwar muss ich ein Programm schreiben, was eine bzw. Subtraktionen durchführt.
Die Aufgabenstellung lautet wie folgt:
Ein Benutzer gibt jeweils mehrere Zahlen ein, die alle von der ersten subtrahiert werden. Am Ende wird die Differenz auf dem Bildschirm ausgegeben. Der Benutzer kann beliebig viele Zahlen eingeben (mindestens eine), zu jedem Zeitpunkt aber nur eine, d.h. nach einer Zahleneingabe wird er gefragt, ob er weitere Zahlen eingeben will. Wenn ja, erhält er die Möglichkeit, wenn nein, wird die Differenz ausgegeben. Gibt er nur eine Zahl ein, so wird diese unverändert ausgegeben.Mein Problem liegt darin, dass ich nicht weiß, wie es die eingegebene Zahl sich merkt und die weiterfolgenden Zahlen subtrahiert.Zeile 15 habe ich auskommentiert,da das erstmal keinen Sinn macht und auch nicht mehr weiter wusste. Ich bitte um eure Hilfe. Danke im voraus
#include <stdio.h> #include <stdlib.h> int main() { char Eingabe; float Zahl; float Ergebnis; printf("Das Programm fuehrt eine Subtraktion durch!\n"); do { printf("Bitte geben Sie die Zahl ein: "); scanf("%f", &Zahl); //Ergebnis = Zahl-; printf("Moechten Sie noch eine Zahl eingeben? j/n": ); scanf("%s", &Eingabe) } while(Eingabe=='j'); printf("Die Differenz betraegt: %f", Ergebnis); return 0; }
-
puh um die Uhrzeit noch
sry, für meine Beschreibung aber es ist schon spät...
bei Fragen einfach nochmal melden^^#include <stdio.h> int main(){ int i_subtraktion = 0; //Definieren der Variablen int i_ergebnis = 0; //Natürlich auch mit Float möglich ;) int run = 1; //run = 1 <- wichtig für while - SCHLEIFE char c_buffer; printf("Dieses Programm f\x99hrt eine Subtraktion durch\n"); //\x99 steht für ein Ü printf("-------------------------------------------------------\n"); printf("Geben Sie eine Zahl ein: "); scanf("%i",&i_ergebnis); //Erste Zahl wird gespeichert while(run){ //run = 1 -> while(1) <- Endlosschleife printf("Zahl: "); scanf("%i",&i_subtraktion); //Erste Zahl die vom Ergebnis abgezogen wird, wird bestimmt i_ergebnis = i_ergebnis - i_subtraktion; //rechenoperation vom Ergebnis wird eingegebene Zahl abgezogen printf("Weitere Zahl eingeben? (J)a::(N)ein: "); fflush(stdin); scanf("%c",&c_buffer); if((c_buffer == 'N')||(c_buffer == 'n')) //wenn n eingegeben wird run = 0; //wird run = 0 und die Schleife bricht ab } printf("Ihr Endergebnis ist: %i",i_ergebnis); fflush(stdin); //eine Funktion um den Eingabepuffer zu löschen getchar(); //damit getchar() auf eine neue Eingabe wartet return 0; }
#include <stdio.h> #include <stdlib.h> int main() { char Eingabe; float Zahl; float Ergebnis; printf("Das Programm fuehrt eine Subtraktion durch!\n"); printf("Bitte geben Sie die Zahl ein: "); scanf("%f", &Ergebnis); while(Eingabe == 'j') { printf("Zahl: "); scanf("%f",&Zahl); Ergebnis = Ergebnis - Zahl; printf("Moechten Sie noch eine Zahl eingeben? j/n": ); scanf("%c", &Eingabe) } printf("Die Differenz betraegt: %f", Ergebnis); return 0; }
So müsste dein Code auch passen^^
-
hi DonnerKeks
erstmal danke ich dir sehr, dass du dir so spät noch die Zeit genommen hast mir zu helfen
.
Mit deiner Version, die du gemacht hast kam ich auf diese Ausgabe:
Dieses Programm f�hrt eine Subtraktion durch ------------------------------------------------------- Geben Sie eine Zahl ein: 20 Zahl: 12 Weitere Zahl eingeben? (J)a::(N)ein: Zahl: 6 Weitere Zahl eingeben? (J)a::(N)ein: Zahl: n Weitere Zahl eingeben? (J)a::(N)ein: Ihr Endergebnis ist: -4.
Ich hatte nicht die Möglichkeit die Frage zu beantworten. Wenn ich mit j beantworte kommt die Frage nochmal.
Durch deine Hilfe habe ich aber geschafft meine Version noch zu erweitern und habs auch hinbekommen.
#include <stdio.h> #include <stdlib.h> int main() { char Eingabe; float Zahl; float Ergebnis; printf("Das Programm fuehrt eine Subtraktion durch!\n"); printf("Bitte geben Sie die Zahl ein: "); scanf("%f", &Ergebnis); printf("Moechten Sie das Programm noch benutzen? j/n: "); scanf("%s", &Eingabe); while(Eingabe == 'j') { printf("Bitte geben Sie die naechste Zahl ein: "); scanf("%f",&Zahl); Ergebnis = Ergebnis - Zahl; printf("Moechten Sie noch eine Zahl eingeben? j/n: "); scanf("%s", &Eingabe); } printf("Die Differenz betraegt: %.3f\n", Ergebnis); return EXIT_SUCCESS; }
-
hmmm ok
also bei mir schaut das ganze so aus,Dieses Programm führt eine Substraktion durch ---------------------------------------------- Geben Sie eine zahl ein: 10 Zahl: 4 Weitere Zahl eingeben? (J)a::(N)ein: j Zahl: 2 Weitere Zahl eingeben? (J)a::(N)ein: n Ihr Endergebnis ist 4
aber ist ja nicht schlimm.
Wenn du dein Programm zum laufen gebracht hast,
passt ja alles
-
Ich habe die Posts eben nur überflogen, wollte aber noch anmerken, dass du bei scanf aufpassen musst, dass noch ein newline-Zeichen im Puffer hockt. Wenn du jetzt ein weiteres scanf aufrufst wird das newline, welches noch im Puffer steht, eingelesen und es schaut so als, als ob das scanf übersprungen wird.
-
Du musst auch aufpassen dass du in scanf die Formatierungszeichen verwendest.
%s steht für einen String. Wenn du nur EIN Buchstabe einlesen willst solltest du %c nehmen, alsoscanf("%c", &Eingabe);
-
Binggi schrieb:
%s steht für einen String. Wenn du nur EIN Buchstabe einlesen willst solltest du
getchar() nehmen.
-
eigentlich solltes du lieber
fscanf(stdin, "%s", s_string);
fprintf(stdout, "%s", s_string);verweden um undefiniertes Verhalten zu vermeiden
mit freundlichen Grüßen
-
O.o schrieb:
eigentlich solltes du lieber
fscanf(stdin, "%s", s_string);
fprintf(stdout, "%s", s_string);verweden um undefiniertes Verhalten zu vermeiden
Was unterscheidet denn ein
printf("%s", s_string)
von einemfprintf(stdout, "%s", s_string)
?
-
Nicht viel
lediglich Geschmackssache und ich finde
es übersichtlicher.auch sollte man statt scanf(); lieber scanf_s(); verwenden,
damit es nicht zu einem Buffer Overflow kommen kann.Wenn man das allerdings nur als Freizeitbeschäftigung macht,
muss es einen nicht umbedingt interessieren
-
O.o schrieb:
Nicht viel
lediglich Geschmackssache und ich finde
es übersichtlicher.Was jetzt, undefiniert oder Geschmackssache?
O.o schrieb:
auch sollte man statt scanf(); lieber scanf_s(); verwenden,
damit es nicht zu einem Buffer Overflow kommen kann.scanf_s()? Was ist denn das?
O.o schrieb:
Wenn man das allerdings nur als Freizeitbeschäftigung macht,
muss es einen nicht umbedingt interessierenWenn es dich nicht umbedingt interessiert, warum dann darüber reden?
-
einigen wir uns auf undefinierte Geschmackssache? :p
mich interessiert es schon irgendwie...
ich weis auch nicht wiesoscanf_s == scanf nur, dass es bei scanf_s nicht
zu einem buffer overflow kommen kann. Allerdings
wird die Funktion nicht von allen Compilern unterstüzt
und ist demach auch nicht einfach portable.schönen Abend noch
-
O.o schrieb:
scanf_s == scanf nur, dass es bei scanf_s nicht
zu einem buffer overflow kommen kann.Die Funktion scanf kann man so benutzen, dass es zu keinem Pufferüberlauf kommt, indem man die maximale Anzahl der einzulesenden Zeichen im Formatstring festlegt.
-
vielen dank an euch alle