problem mit dem modulo in einer Funktion
-
Hi,
habe einen taschenrechner programmiert mit Hilfe von Funktionen, dieser läuft auch, bis zu dem Punkt an dem ich die Rechenoperation (%) modulo einsetze. hier nun mein Quelltext:
float summe(float zahl1, float zahl2)
{
float ergebniss;
ergebniss=zahl1+zahl2;
return (ergebniss);
}float minus(float zahl1, float zahl2)
{
float ergebniss;
ergebniss=zahl1-zahl2;
return (ergebniss);
}float multiplikation(float zahl1, float zahl2)
{
float ergebniss;
ergebniss=zahl1*zahl2;
return (ergebniss);
}float dividieren(float zahl1, float zahl2)
{
float ergebniss;
ergebniss=zahl1/zahl2;
return (ergebniss);
}float modulo(float zahl1, float zahl2)
{
float ergebniss;
ergebniss=zahl1%zahl2; // Hier scheint der Fehler zu sein Oo
return (ergebniss);
}#pragma argsused
int main(int argc, char* argv[])
{
int zahl1;
char oper;
int zahl2;
int ergebniss;printf("Zahl 1: \t");
cin>>zahl1;
printf("Wähle einen Operator? (+) (-) (*) (/) (%) \t");
cin>>oper;switch(oper)
{
case '+': printf("Zahl 2: \t");
cin>>zahl2;
ergebniss=summe(zahl1,zahl2);
printf("Ergebniss: %i \n", ergebniss);
break;case '-': printf("Zahl 2: \t");
cin>>zahl2;
ergebniss=minus(zahl1,zahl2);
printf("Ergebniss: %i \n", ergebniss);
break;case '*': printf("Zahl 2: \t");
cin>>zahl2;
ergebniss=multiplikation(zahl1,zahl2);
printf("Ergebniss: %i \n", ergebniss);
break;case '/': printf("Zahl 2: \t");
cin>>zahl2;
ergebniss=dividieren(zahl1,zahl2);
printf("Ergebniss: %i \n", ergebniss);
break;
case '%': printf("Zahl 2: \t");
cin>>zahl2;
ergebniss=modulo(zahl1,zahl2);
printf("Ergebniss: %i \n",ergebniss);
break;default : printf("Sie sollen einen Operator wählen.");
break;
}
getchar();
return 0;Bitte um Hilfe,der Compiler gibt mir immer aus: E2060 Unzulässige Verwendung einer Fließkommazahl !!! Wär echt nett wenn mir jemand hilft danke !
-
Modulo gibt doch den Rest aus wenn man zwei ganzzahlige Werte teilt. Wenn man mit Kommazahlen arbeitet gibts keinen Rest!
=> falls wirklich erwünscht erst umwandeln.
Grüße,
der Ewigsuchende
-
Der Modulo-Operator ist nur für Ganzzahlen definiert, da er ja den Rest einer Ganzzahlendivision zurückgibt. D.h.
5 % 2 = 1; denn die 2 geht zweimal in die 5; Rest 1.
Da eine Gleitpunkt-Division den Rest mitteilt (5 / 2 == 2,5), ist der Modulo-Operator - wie bereits erwähnt - nicht dafür definiert.
Caipi