Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

...und wo glaubst du hat er einen Fehler gemacht? Poste doch einfach mal das Progrämmchen.......

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.

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?

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

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

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.