Dividieren - Rest angeben
-
Hi!
Ich habe für mein kleines Rechenprogramm eine ganz simple Formel aufgestellt mit deren Hilfe das Programm mir wenn ich zuerst den Divident und danach den Divisor eingebe eigentlich das Ergebnis ohne Zahlen hinter dem Komma anzeigen sollte.
Da das Programm nur zählen soll wie oft der Divisor GANZ in den Divident passt. Also bei 38 als Divident und 3 Divisor zum Beispiel 12, da 3*12 = 36. Da bleiben jetzt noch 2 übrig, und das soll das Programm anzeigen.
Meine Formel lautet
cout<<"\nDividend:"; cin>>div1; cout<<"\nDivisor:"; cin>>div2; output = div1 / div2; rest = div1 - (output * div2); cout<<"\nResult : "; cout<<output; cout<<" rest : "; cout<<rest;
Nun gibt mir das Programm aber bei oben gezeigtem Beispiel als Result 12 an, was auch richtig ist. Aber als rest zeigt es mir -1014.
Danke schon im Voraus.
MfG Schrimms
-
Was hast du für Datentypen verwendet?
-
Datentypen?
-
long int output;
int div1;
int div2;
long int rest;
-
ich kann dir zwar auch nciht sagen, was daran falsch ist, aber warum nimmst du nicht
/*unsigned*/ int rest = div1 % div2; /*bin mir gerad nicht sicher, ob es falsch wär, nen unsigned davor zu schreiben eigtl halt ich es gerad für sinnvoller, aber weiß nicht, ob modulo immer der bertrag ist oder nicht ^^*/
ist doch extra dafür da...
btw:
//1.: entweder du definierst hier erst div1 und div2 oder: cout << "\nDividend:"; //1.: definierst hier erst div1 (so würd ich es machen) cin >> div1; //2.: was ist, wenn der user was falsches eingegeben hat? cout<<"\nDivisor:"; //1.: und hier div2 cin >> div2; //2.: was ist bei falscher eingabe? Vor allem, wenn 0 eingegeben wird... //1.: T output (div1 / div2); output = div1 / div2; //1.: T rest (/*formel*/); rest = div1 - (output * div2); cout << "\nResult : " << output << " rest : " << rest;
Bye
edit:
der form halber noch der hinweis: eigtl sollte man output und rest jeweils als const deklarieren... außerdem is output nich gerad nen toller variablen-name dafür find ich... wie wärs mit quotient oder so?
die beiden Ts stehen natürlich für den jeweiligen Datentyp - musst du also nur durch int (oder so - je nach dem, was du halt willst ^^) ersetzen
-
Danke unskilled aber ich habe meinen "Fehler" gefunden.
Da ich verhindern wollte, dass er div1 - output rechnet und dann erst * div2 - trotz Punkt vor Strich, habe ich die klammer um output * div2 gesetzt.
Diese Klammer hat - warum auch immer - einen Rechenfehler ausgelöst.
Habe sie nun entfernt und alles klappt wie es soll.
-
Ist jz zwar nicht gerade die schlüssigste bzw logischste Antwort aber vll guckste dir ja trotzdem mal an, was ich dazu geschrieben habe... Ist denke nicht ganz doof, sich da ma Gedanken drüber zu machen...
-
Schrimms schrieb:
Danke unskilled aber ich habe meinen "Fehler" gefunden.
Da ich verhindern wollte, dass er div1 - output rechnet und dann erst * div2 - trotz Punkt vor Strich, habe ich die klammer um output * div2 gesetzt.
Diese Klammer hat - warum auch immer - einen Rechenfehler ausgelöst.
Habe sie nun entfernt und alles klappt wie es soll.Welchen Compiler hast du benutzt?