Kezdőoldal » Számítástechnika » Programozás » Hogy van a modulő C++-ban?

Hogy van a modulő C++-ban?

Figyelt kérdés
Azt hittem a % az, de most látom, hogy -1 % 5 az nem 4, hanem -1!

2012. szept. 9. 00:24
 1/4 anonim ***** válasza:

[link]


Pedig a % a maradékos osztás.

2012. szept. 9. 00:42
Hasznos számodra ez a válasz?
 2/4 iostream ***** válasza:

Nagyon jó észrevétel! A trükk az, hogy a -1 és a 4 ugyanaz a maradékosztály modulo 5 szerint.

A % operátor pontos definíciója az alábbi egyenlőséggel van megadva:

(a/b)*b + a%b == a.

2012. szept. 9. 08:24
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
de nekem matematikai értelmben vett moduló kell. Ami a legkisebb pozitív!
2012. szept. 9. 10:51
 4/4 iostream ***** válasza:

Matematikai értelemben a -1 és a 9 is jó eredmény.


Rövid guglizás után találtam ezt:

template<typename V>

V mod(const V& a, const V& b)

{

return (a % b + b) % b;

}


Ez explicit típusmegadást kíván bizonyos esetekben, úgyhogy inkább ezt javaslom:

template<typename T, class U>

decltype(T() + U()) mod(const T& a, const U& b)

{

return (a % b + b) % b;

}


Ehhez persze az új standardot bíró fordító kell.

2012. szept. 9. 14:02
Hasznos számodra ez a válasz?

További kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!