Brei Geschrieben 8. Mai 2003 Geschrieben 8. Mai 2003 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
Shadax Geschrieben 9. Mai 2003 Geschrieben 9. Mai 2003 ...und wo glaubst du hat er einen Fehler gemacht? Poste doch einfach mal das Progrämmchen.......
Crow T. Robot Geschrieben 9. Mai 2003 Geschrieben 9. Mai 2003 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.
Brei Geschrieben 9. Mai 2003 Autor Geschrieben 9. Mai 2003 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?
nic_power Geschrieben 9. Mai 2003 Geschrieben 9. Mai 2003 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
capone007 Geschrieben 12. Mai 2003 Geschrieben 12. Mai 2003 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
nic_power Geschrieben 12. Mai 2003 Geschrieben 12. Mai 2003 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
Crow T. Robot Geschrieben 12. Mai 2003 Geschrieben 12. Mai 2003 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
Binchen Geschrieben 20. Mai 2003 Geschrieben 20. Mai 2003 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden