Startfehler
-
Richtig von der Idee her. Guck nochmal ganz scharf hin, besonders auf die scanfs:
printf("Geben Sie die eine Zahl fuer m ein: "); scanf("%i", &m); printf("Geben Sie ein Zahl fuer x ein: "); scanf("%i", &x); printf("Geben Sie eine Zahl fuer b ein: "); scanf("%i", &m);
-
Windassel schrieb:
zum schluss eine zahl für b eingebe.
Dann solltest du auch darauf achten, was du tatsächlich eingibst.
-
SeppJ schrieb:
Richtig von der Idee her. Guck nochmal ganz scharf hin, besonders auf die scanfs:
printf("Geben Sie die eine Zahl fuer m ein: "); scanf("%i", &m); printf("Geben Sie ein Zahl fuer x ein: "); scanf("%i", &x); printf("Geben Sie eine Zahl fuer b ein: "); scanf("%i", &m);
sehe leider nix -.- verrats mir, was falsch ist
-
CStoll schrieb:
Dann solltest du auch darauf achten, was du tatsächlich eingibst.
... einliest.
-
Windassel schrieb:
sehe leider nix -.- verrats mir, was falsch ist
Das kommt davon, wenn man so nichtssagende Variablennamen verwendet
Du verwendest zweimal die Variable m in deinen scanf()-Aufrufen.
-
Windassel schrieb:
Hey, fange gerade wieder mit c programmierung an, und frage mich wieso mein compiler das nicht ausgeben kann? oO
Wieder?
Für sowas kannst du auch ganz gut einen Debugger nutzen. Hoffe du weißt so etwas schon zu benutzen.
So bekommt man eigentlich ganz gut seine Fehler raus, sofern man weiß, was man überhaupt machen will. Letzteres scheint ja der Fall zu sein
-
CStoll schrieb:
Windassel schrieb:
sehe leider nix -.- verrats mir, was falsch ist
Das kommt davon, wenn man so nichtssagende Variablennamen verwendet
Du verwendest zweimal die Variable m in deinen scanf()-Aufrufen.
argggggghh
jetzt auch gesehen -.-
shid
dankee
dann hab ich jetzt schon meinen eigenen taschenrechner
-
CStoll schrieb:
Das kommt davon, wenn man so nichtssagende Variablennamen verwendet
m, x und b sind eigentlich recht gebräuchlich für eine lineare Gleichung.
-
DaRe schrieb:
Wieder?
Für sowas kannst du auch ganz gut einen Debugger nutzen. Hoffe du weißt so etwas schon zu benutzen.
So bekommt man eigentlich ganz gut seine Fehler raus, sofern man weiß, was man überhaupt machen will. Letzteres scheint ja der Fall zu seinDas Forum zu benutzen macht mir aber mehr Freunde, anstatt so nen doofen debugger
so macht das fehler-ausmärtzen mehr spass
-
Hauptsache du lernst
Aber ein Debugger ist manchmal auch ganz praktisch.
-
DaRe schrieb:
Hauptsache du lernst
Aber ein Debugger ist manchmal auch ganz praktisch.
stimme ich dir zu
und danke
-
DirkB schrieb:
CStoll schrieb:
Das kommt davon, wenn man so nichtssagende Variablennamen verwendet
m, x und b sind eigentlich recht gebräuchlich für eine lineare Gleichung.
Wenn du das sagst
Trotzdem sind die Zeiten vorbei, wo man mit ein- bis zweibuchstabigen Variablennamen umgehen muß.
@Windassel: Aber nicht übertreiben - sonst kann es schnell passieren, daß die anderen User das Interesse daran verlieren, dir überhaupt noch zu helfen. C-Lehrbücher (außer es steht J.W. vorne drauf) sind hilfreich, um sich die Grundlagen anzueignen, Compiler und Debugger leisten heutzutage gute Arbeit darin, dir bei der Fehlersuche zu helfen - also nutze sie, bevor du das Forum mit unsinnigen Fragen bombardierst.
-
DirkB schrieb:
CStoll schrieb:
Dann solltest du auch darauf achten, was du tatsächlich eingibst.
... einliest.
eintippst
-
haha
nein, werd ich schon nicht
aber fragen kostet ja nix
bemühe mich trotzdem immer, die Lösung vorher zu finden und zu verstehen.
-
Ich hoffe Dir ist klar, dass du hier spätestens wieder schreibst, wenn Du die Division in Deinen Taschenrechner integrieren willst.
Deine Ergebnisvariable kann nur mit Ganzzahlen umgehen und ab und ab kommt bei einer Division auch schon mal eine Kommazahl heraus...
-
jo das weiß ich. wollte es aber nur erstmal so für den anfang probieren. habs aber auch rausbekommen
Mal ne Frage...
ich möchte meinem programm sagen, dass es nun 4 möglichkeiten gibt, wie man weiterfahren könnnte. Drücken sie die 1, 2, 3, 4.
wenn man die 1 drückt, soll die summe zweier zahlen ausgegeben werden, die man zuvor eingegeben hat, wenn man die 2 drückt soll die differenz ausgegeben werden, bei der 3 der quotient und bei der 4 das produkt. das macht man doch alles mit if-else anweisungen, oder?
-
Entweder if-else oder auf per switch-case.
(und ich würde die Ein- und Ausgaben außerhalb dieses Entscheidungsblocks durchführen - damit vermeidest du redundanten Code)
-
okay, switch case hab ich mir dann schon fast gedacht, aber soweit bin ich noch nicht.
ein- und ausgabe außerhalb dieses entscheidungsblocks?
was meinste damit?
redundanten code?
okay
Bis jetzt sieht mein Code so aus,
EDIT#5:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { float zahl1, zahl2; float d1 = 1; float d2 = 2; float d3 = 3; float d4 = 4; float erg1, erg2; printf("Geben Sie einen Wert fuerr [Zahl1] ein: "); scanf("%d", &zahl1); printf("Geben Sie einen Wert fuerr [Zahl2] ein: "); scanf("%d", &zahl2); printf("\nWas moechten Sie als naechstes tun?\nDruecken Sie die [1] um die Summe auszurechnen.\nDruecken Sie die [2] um die Differenz auszurechnen.\nDruecken Sie die [3] um das Produkt auszurechnen.\nDruecken Sie die [4] um den Quotienten auszurechnen.\n"); scanf("%f", &d1, &d2, &d3, &d4); /*Erster Ausdruck*/ if (d1 == 1) { printf("\nSumme: %2f\n", zahl1+zahl2); } /*Zweiter Ausdruck*/else { if (d2 == 2) { printf("\nDifferenz: %2f\n", zahl1-zahl2); } } /*Beginn des dritten Ausdrucks*/else { if (d3 == 3) { prtintf("\nProdukt: %2f\n", zahl1*zahl2); } } system("PAUSE"); return 0; }
Es wird ein primärer Audruck vor dem else bei beginn des dritten Ausdrucks erwartet? oO
-
Holla, was machst du denn da?
scanf("%f", &d1, &d2, &d3, &d4);
Also, das was du da machst ist etwas kurios. Merke dir die Rechenoperation in NUR EINER Variablen. Dafür sollte ein int oder char reichen.
Bei scanf wird nur eine zusätzliche Variablenadresse erwartet, wenn du einen "format specifier" angibst(%f). Die "format specifier" weiter oben, solltest vllt. auch nochmal überarbeiten;)
Es fehlt noch eine Prüfung auf falsche Eingabe und die Einrückung ist auch ein wenig gewöhnungsbedürftig. Wie wärs mit einem:
if(Variable==Vergleichswert1){ //Fall1 } else if(Variable==Vergleichswert2) { //Fall2 } else { //Restfälle }
das sieht ein wenig strukturierter aus. mit switch/case:
switch(Variable) { case Vergleichswert1: //Fall1 break; case Vergleichswert2: //Fall2 break; default: //Restfälle break; }
-
das mit dem float und %f hab ich dann auch noch net getestet
und hat auch irgendwie nicht funktioniert. hab das wieder bei int und %i gelassen. wie man die { und } einrückt weiß ich auch net oO aber danke
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int zahl1, zahl2; int d1 = 1; int d2 = 2; int d3 = 3; int d4 = 4; int erg1, erg2; printf("Geben Sie einen Wert fuerr [Zahl1] ein: "); scanf("%d", &zahl1); printf("Geben Sie einen Wert fuerr [Zahl2] ein: "); scanf("%d", &zahl2); printf("\nWas moechten Sie als naechstes tun?\nDruecken Sie die [1] um die Summe auszurechnen.\nDruecken Sie die [2] um die Differenz auszurechnen.\nDruecken Sie die [3] um das Produkt auszurechnen.\nDruecken Sie die [4] um den Quotienten auszurechnen.\n"); scanf("%i", &d1, &d2, &d3, &d4); /*Erster Ausdruck*/ if (d1 == 1) { printf("\nSumme: %i\n", zahl1+zahl2); /*Zweiter Ausdruck*/ } else if (d2 == 2) { printf("\nDifferenz: %i\n", zahl1-zahl2); /*Dritter Ausdruck*/ } else (d3 == 3) ;{ printf("\nProdukt: %i\n", zahl1*zahl2); /*Vierter Ausdruck*/ } else (d4 == 4) ;{ printf("\nQuotient: %i\n", zahl1/zahl2); system("PAUSE"); return 0; }
So hab ich das jetzt, funktionieren tut es net, aber hoffe, dass ich deine Vorschläge berücksicht habe, obwohl ich nicht ganz wusste, wie ich es besser machen sollte