probleme mit taschenrechner
-
void main() ????????
Das ist ANSI C Forum, bitte dann int main benutzen!
-
@supertux:
Deinen letzten Beitrag verstehe ich nicht, schon gar nicht in Zusammenhang mit der zitierten Aussagen. Außerdem waren wir über die Problematik schon längst hinaus.
-
@CarstenJ: Ich hab einen Fehler gemacht, ich muss auf Zitat geklickt haben ohne zu merken. Ich wollte nur wegen void main lästern
-
ich habe mal alle sachen geändert die ihr gesagt habt und es funktioniert immer noch nicht
-
ok. mein programm funktioniert jetzt. habe die restlichen fehler noch selbst herausgefunden.
edit: mist, es kommt immer -1 raus
-
bei meinem programm kommt immer als ergebnis
-1.#QNAN
weiß jemand was dass bedeutet?
hier mein jetziger code
[/cpp]nclude <stdio.h>
#include <math.h>int main()
{
double wahl, x, y, z, rest;
printf("\n*Taschenrechner*\n\n");
printf("Was moechtest du tun?\nZum Auswaehlen einfach die passende nummer wählen.\n 1. Addition\n 2. Subtraktion\n 3. Multiplikation\n 4. Division\n\n ");
scanf("%g",&wahl);if (wahl==1) /*addition*/
{
printf("Gib bitte den 1. Wert ein.\n");
scanf("%g",&x);
printf("Gib bitte den 2. Wert ein.\n");
scanf("%g",&y);
z= x + y;
printf("Ergebniss:%g",z);
scanf("%g",&rest);
}else if (wahl==2) /*subraktion*/
{
printf("Gib bitte den 1. Wert ein.\n");
scanf("%g",&x);
printf("Gib bitte den 2. Wert ein.\n");
scanf("%g",&y);
z= x - y;
printf("Ergebniss:%g\n",z);
scanf("%g",&rest);
}else if (wahl==3) /*multiplikation*/
{
printf("Gib bitte den 1. Wert ein.\n");
scanf("%g",&x);
printf("Gib bitte den 2. Wert ein.\n");
scanf("%g",&y);
z= x * y;
printf("Ergebniss:%g\n",z);
scanf("%g",&rest);
}else if (wahl==4) /*division*/
{
printf("Gib bitte den 1. Wert ein.\n");
scanf("%g",&x);
printf("Gib bitte den 2. Wert ein.\n");
scanf("%g",&y);
z= (x / y);printf("Ergebniss:%g\n",z);
scanf("%g",&rest);
}
return 0;
}[cpp]
-
kann mir niemand helfen?
-
Question:
Warum Liest du den "rest" ein?
Warum verwendest du %g ?
(Ich verwende bei double %f)
-
Ich kann leider zum Problem nix beitragen aber ein Kommentar hätte ich noch: Wenn ihr euren Code einrückt, nimmt die Lesbarkeit erheblich zu und man sieht die Fehler viel viel schneller.
-
Wenn ihr euren Code einrückt, nimmt die Lesbarkeit erheblich zu und man sieht die Fehler viel viel schneller.
Soetwas... das wäre mir nie eingefallen... aber nochwas...
es giebt sogar eine eigene Schaltfläche "C/C++".
-
und wie du sicher siehst...
hat er versucht, es korrekt anzuzeigen, aber...schau in seiner Nachricht nach... er hat [cpp] ganz am Ende doch geschrieben!
-
chille07 schrieb:
und wie du sicher siehst...
hat er versucht, es korrekt anzuzeigen, aber...schau in seiner Nachricht nach... er hat [cpp] ganz am Ende doch geschrieben!
Er hat zuerst das CPP Tag geschlossen und dann es geöffnet.
-
wenigstens hat ers versucht...
und dann hilft ihm dein Ratschlag auch nicht weiter...
(einrücken)
-
so, ich habe double mal gegen int eingetauscht. jetzt funktioniert es.
PS:mein code ist normalerweise eingerückt. ist nur scheinbar duch dass kopieren irgendwie abhanden gekommen.
-
chille07 schrieb:
wenigstens hat ers versucht...
und dann hilft ihm dein Ratschlag auch nicht weiter...
(einrücken)Ich hab auch nicht für diesen Code gemeint, sondern im allgemeinen. Ich sehe hier, dass viele den Code posten und der ist nicht eingerückt. Ist sicherlich dem Compiler egal, ob der Code eingerückt ist oder nicht, aber wir sind eben Menschen und keine Compiler.
-
supertux schrieb:
aber wir sind eben Menschen und keine Compiler.
Das ist eigentlich ein Spruch für ne Signatur...
-
[quote="C-Progger"]ich habe versucht einen kleinen taschenrechner zu schreiben und bekomme immer massig fehlermeldungen.
könnt ihr mir sagen was da alles falsch ist?
ich habe eine andere Idee, das Problem des Taschenrechner zu lösen, und zwar mit 3 Funktionen und eine Switch, case Methode
#include<stdio.h>
#include<math.h>float Add(float, float);//Funtion für Addition
float Dev(float, float);// F. für Devision
float Mult(float, float);// Multiplikationint main()
{
float a, b;
printf("1. Zahl: ");
scanf("%g", &a);
printf("2. Zahl: ");
scanf("%g", &b);
while(getchar != '\n');// versuch mal ohne dieser
// Zeile das Programm auszuführen,
char wahl;
printf(".......................Tachenrechner..........................\n");
printf("Bitte waehlen: \n\ta:Addition \n\tm:Multiplikation \n\td: Devision\n");
scanf("%c",&wahl);
switch(wahl)
{
case 'a': printf("Die Addition von %g und %g ist %g \n",a,b,Add(a,b));
break;
case 'm': printf("Die Multp. von %g und %g ist %g \n",a,b,Mult(a,b));
break;
case 'd': printf("Die Devision von %g durch %g ist %g \n",a,b,Dev(a,b));
break;
default: printf("Leider habe Sie eine falsche Eingabe eingegeben!!!\n");
}
return 0;
} //Ende main Funktionfloat Add(float x, float y)
{
return(x+y);
}
float Mult(float x, float y)
{
return (x*y);
}
float Dev(float x, float y)
{
if (y == 0)
{
printf("\nDie Devision durch 0 ist nicht bekannt oder nicht zulässig!!!n");
exit(0);
}
else
return (x/y);
}
-
So müsste es gehen:
#include<stdio.h> /* math.h unnötig */ float Add(float, float); /* Funtion für Addition */ float Div(float, float); /* F. für Division <-- Rechtschraipfeler */ float Mult(float, float); /* Multiplikation */ int main() { float a, b; printf("1. Zahl: "); scanf("%g", &a); printf("2. Zahl: "); scanf("%g", &b); while(getchar() != '\n'); /* <-- () vergessen */ char wahl; printf(".......................Tachenrechner..........................\n"); printf("Bitte waehlen: \n\ta:Addition \n\tm:Multiplikation \n\td: Devision\n"); scanf("%c", &wahl); switch(wahl) { case 'a': printf("Die Addition von %g und %g ist %g \n", a, b, Add(a, b)); break; case 'm': printf("Die Multp. von %g und %g ist %g \n", a, b, Mult(a, b)); break; case 'd': printf("Die Devision von %g durch %g ist %g \n", a, b, Div(a, b)); break; default: printf("Leider habe Sie eine falsche Eingabe eingegeben!\n"); /* <-- zu viele Ausrufungszeichen. */ } return 0; } //Ende main Funktion float Add(float x, float y) { return(x+y); } float Mult(float x, float y) { return (x*y); } float Div(float x, float y) { if (y == 0) { printf("\nDie Devision durch 0 ist nicht zulässig!n"); /* <-- nicht zulässig, zu viele Ausrufungszeichen. */ exit(0); } else return (x/y); }
-
CarstenJ schrieb:
supertux schrieb:
aber wir sind eben Menschen und keine Compiler.
Das ist eigentlich ein Spruch für ne Signatur...
Tja, eingentlich schon. Ich hab einmal den gleichen Satz im ersten Semester als wir uns gestritten haben, ob man sagen darf "der Compiler liest zeilenweise".
0Xdeadbeef schrieb:
float Div(float, float); /* F. für Division <-- Rechtschraipfeler */
hey beefy, da hast du ein einen rechtSchraipheler