Veröffentlicht 8. Mai 200322 j Hallo In C++ gibts ja den "Modulo". Also das %-Zeichen. Unser Lehrer hat gesagt, das gibt bei einer Division den ganzzahligen Rest zurück. Und dann hat er auch dafür eine "ausgeschriebene Version" gezeigt. Ich glaub, aber der hat da einen Fehler drin, oder ich hab´s falsch verstanden. also wie kann man durch längeren Code das %-Zeichen ersetzen? rest = zahl1 % zahl2 danke
9. Mai 200322 j ...und wo glaubst du hat er einen Fehler gemacht? Poste doch einfach mal das Progrämmchen.......
9. Mai 200322 j Also Modulo gibt doch den Rest einer Integerdivision. Also führt man einfach die Integerdivision durch, multipliziert das Ergebnis wieder mit dem vorigen Divisor und subtrahiert das Produkt vom vorigen Dividenden. int zahl1 = 10; int zahl2 = 3; int rest; rest = zahl1 - ((zahl1 / zahl2) * zahl2) Habe gerade keinen C-Compiler installiert, um das zu verifizieren, evtl. müsste man in der Klammer noch explizit nach int casten? Aber das Prinzip sollte richtig sein.
9. Mai 200322 j tja, den code hat er uns auch gegeben. Was ich nicht verstehe: rest = zahl1 - ((zahl1 / zahl2) * zahl2) ich muss ja zuerst die Klammer rechnen, also zahl1/zahl2 * zahl2 somit hebt sich doch das wieder auf wenn ich durch zahl 2 und dann wieder mal zahl2 rechne! Oder wird, da es INT-Variablen sind, einfach das, was hinter dem Komma steht automatisch weggelassen? Dann würde es für mich Sinn machen. Hab wenig Erfahrung in C und sonstigen Programmsprachen, aber in Visual Basic kann man das so machen: zahl1 = 7.3 ergebnis = int(zahl1) dann steht in ergebnis "7" drin. Hab ich das jetzt schon richtig verstanden?
9. Mai 200322 j Original geschrieben von b-r-e Oder wird, da es INT-Variablen sind, einfach das, was hinter dem Komma steht automatisch weggelassen? Dann würde es für mich Sinn machen. Ja. Integer sind Ganzzahlen, d.h. es gibt keine "krummen" Ergebnisse. Nic
12. Mai 200322 j Original geschrieben von b-r-e ich muss ja zuerst die Klammer rechnen, also zahl1/zahl2 * zahl2 somit hebt sich doch das wieder auf wenn ich durch zahl 2 und dann wieder mal zahl2 rechne! nich ganz....wenn ich dich überhaupt richtig verstehe: nehmen wir für zahl2 den wert 2 (zahl2 = 2; ) du rechnest ja nicht einen wert erst MAL 2 und dann DURCH 2, sondern eine Zahl DURCH eine andere und das Ergebnis MAL 2. hoffe nich an dir vorbei "geschrieben" zu haben
12. Mai 200322 j Hallo, Äh, also mathematisch gesehen gilt: a ---- * b = a, mit b!=0 b das b kürzt sich raus. Ob Du nur (a/b)*b oder (a*b)/b rechnest, spielt eigentlich keine Rolle. Nic
12. Mai 200322 j Mathematisch gesehen hast du recht, hier ging es aber um die speziellen Eigenarten einer Integerdivision bzw. Modulo. Und da macht es sehr wohl einen Unterschied. a = 10; b = 3; erg1 = (a/b)*b; // ergibt 9 erg2 = (a*b)/b; // ergibt 10
20. Mai 200322 j Hi Leute, int zahl1 = 10; int zahl2 = 3; int rest; rest = zahl1 - ((zahl1 / zahl2) * zahl2) zuerst rechnet man zahl1/zahl2 10/3=3 - da beides int werte sind dann 3*zahl2 3*3=9 und zuletzt zahl1-9 10-9=1 Also hast Du den Rest Wert von 1 Raus Es ist die gleiche Rechnung wie mit Modulo, nur ausführlich geschrieben. Rechne mal alles mit Fließkommazahlen und schau Dir das Ergebnis an. MFG Bine
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.