Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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?

Geschrieben
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

Geschrieben
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 ;)

Geschrieben

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

Geschrieben

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...