#1 19. Dezember 2008 Hilfe Modulo Funktion Habe einen einfachen Taschenrechner geschrieben in C. Jedoch funktioniert die Ausgabe von Modulo nicht.. er zeigt immer an das 0 raus kommt....kann mir jemand sagen warum? und wie es richtig ist.. Code: [COLOR="Red"]#include <stdio.h> int main(void) { int weiter; do{ float a,b,erg; char x; printf("Geben Sie einen Wert fuer a ein: "); scanf("%f",&a); getchar(); printf("Geben Sie einen Wert fuer b ein: "); scanf("%f",&b); getchar(); printf("Geben Sie einen Operator ein (+,-,*,/,:,%): "); scanf("%c",&x); getchar(); switch(x) { case '-' : erg=a-b; break; case '+' : erg=a+b; break; case '*' : erg=a*b; break; case '/' : case ':' : if(b!=0)erg=a/b; else printf("Division by Zero"); break; int a,b,erg; case '%' : while(x=='%'){ int a,b,erg; erg=a%b; break;} } printf("Das Ergebnis ist: %.3f\n",erg); printf("Nochmal [1 = JA | 0 = NEIN]? "); scanf("%d",&weiter); } while(weiter==1); system("PAUSE"); return(0); }[/COLOR] + Multi-Zitat Zitieren
#2 19. Dezember 2008 AW: Hilfe Modulo Funktion Code: case '%' : while(x=='%'){ int a,b,erg; erg=a%b; break;} Du definierst hier a & b, und damit wird das float a&n quasi 'verdeckt'. Und da du a und b nicht initialisiert hast, kriegst du natürlich 0 raus. edit: Und natürlich nochn größerer Fehler: Das erg, das du hier neu definierst hat nur innerhalb von dem while{}-Block gültigkeit, d.h. sobald du zu deiner printf()-Anweisung kommst, zählt wieder das "alte" erg, und das is natürlich 0, da du in der while()-schleife an das lokale erg zugewisen hast. + Multi-Zitat Zitieren
#3 19. Dezember 2008 AW: Hilfe Modulo Funktion aha ok....und wie kann ich es richtig machen???? + Multi-Zitat Zitieren
#4 19. Dezember 2008 AW: Hilfe Modulo Funktion liegt doch auf der Hand: Code: switch(x) { case '-' : erg=a-b; break; case '+' : erg=a+b; break; case '*' : erg=a*b; break; case '/' : case ':' : if(b!=0)erg=a/b; else printf("Division by Zero"); break; case '%' : while(x=='%'){erg=a%b; break;} } + Multi-Zitat Zitieren
#5 19. Dezember 2008 AW: Hilfe Modulo Funktion das geht doch gar nicht....bei modulo sind nur Ganzzahlige Werte zugelassen, das ist ja mein problem das ich dort umdefinieren muss in int....wenn ichs so machen würd wie du geschrieben hast kann ich die kopfschleife auch weglassen + Multi-Zitat Zitieren
#6 19. Dezember 2008 AW: Hilfe Modulo Funktion Dann wird eben luxuriös gecastet: Code: switch(x) { case '-' : erg=a-b; break; case '+' : erg=a+b; break; case '*' : erg=a*b; break; case '/' : case ':' : if(b!=0)erg=a/b; else printf("Division by Zero"); break; case '%' : while(x=='%'){erg=(float)((int)a%(int)b); break;} } + Multi-Zitat Zitieren
#7 19. Dezember 2008 AW: Hilfe Modulo Funktion funktioniert trotzdem nicht, auch wenn ich es so einfüge + Multi-Zitat Zitieren
#8 19. Dezember 2008 AW: Hilfe Modulo Funktion Wieso verwendest du da überhaupt ne while-Schleife?! + Multi-Zitat Zitieren
#9 19. Dezember 2008 AW: Hilfe Modulo Funktion Ich sollte das, was ich poste besser durchlesen.... ... Warum verwendest du eine while-Schleife??? Code: switch(x) { case '-' : erg=a-b; break; case '+' : erg=a+b; break; case '*' : erg=a*b; break; case '/' : case ':' : if(b!=0)erg=a/b; else printf("Division by Zero"); break; case '%' : erg=(float)((int)a%(int)b); break; } Was für eine IDE verwendest du? Schonmal mitm Debug-Modus versucht, das ganze einzeln nach zu vollziehen? + Multi-Zitat Zitieren
#10 20. Dezember 2008 AW: Hilfe Modulo Funktion ich verwende die while schleife weil ich nicht weiß wie ich das sonst mit den integer werten machen soll.....könnt gern nen besseren vorschlag machen ich verwende dev-c++ unter windows und unter linux gcc + Multi-Zitat Zitieren
#11 20. Dezember 2008 AW: Hilfe Modulo Funktion Das ist KEINE Begründung! Warum sollte der von uns gepostete Code nicht funktionieren? Was passiert? Was geht schief? Ohne Antworten und vernünftigen Feedback wird aus der Sache nichts. + Multi-Zitat Zitieren
#12 20. Dezember 2008 AW: Hilfe Modulo Funktion es kommt wieder als ergebnis 0.000 raus, wie davor auch.....kannst ja selber ausprobieren ;-) + Multi-Zitat Zitieren
#13 20. Dezember 2008 AW: Hilfe Modulo Funktion mit welchen Zahlen hast dus denn probiert? Bei z.B. 6 und 3 wär klar dass 0 rauskommt! ( is ja schließlich der Modulo Operator ) Also versuchs mal mit Zahlen die sich nicht ohne Rest teilen lassen. Vll liegts ja dadran *g* Gruß meckes + Multi-Zitat Zitieren
#14 20. Dezember 2008 AW: Hilfe Modulo Funktion schreib einfach case '%' : erg=((int)a%(int)b); break; und nim nicht zahlen her die null ergeben teste einfahc mal 5 und 4 oder sowas greetz + Multi-Zitat Zitieren