Gå til innhold

Hva er remainder operator? ( % )


Anbefalte innlegg

Leser en c++ bok nå som de nevner "Remainder operator" ( %) De viser at den fungerer slik:

 

6 % 8 = 6

7 % 8 = 7

8 % 8 = 0

9 % 8 = 1

10 % 8 = 2

 

Kan noen forklare meg hva den gjør/operer? Jeg forstår det ikke :\

 

 

 

 

Forøvrig er det noen ord og uttrykk jeg ikke finner ut av, hadde vært fint om noen visste det :)

 

Foobar

Analogous

Reusability

Superset

Down in the trenches

Mired

Elicit

Inadvertently

Cascading

Angle

Remainder

Condense

Incremented

Invoked

 

Hva er konsortium / consortium ?

Lenke til kommentar
Videoannonse
Annonse
Leser en c++ bok nå som de nevner "Remainder operator" ( %) De viser at den fungerer slik:

 

6 % 8 = 6

7 % 8 = 7

8 % 8 = 0

9 % 8 = 1

10 % 8 = 2

Remainder operator blir også kalt modulus, den returnerer rest etter å ha utført en divisjon.

Den første der:

I en heltallsverden, vil 6 / 8 være like 0. Dette er fordi 6 / 8 er mindre enn 1. Det vil si at vi ikke har blitt kvitt noe av 6eren, og vi sitter igjen med 6.

 

Eks 2

 

9 % 8 = 1

8/8 = 1

 

9-(1*8) = 1

Det du får ut er den siste ligningen (selv om alle her ble 1)

 

Eks 3:

 

32 % 13 = 6

32 / 13 ~= 2 (er egentlig 2,46... Det rundes alltid NED til første hele tall)

 

32 - (2*13) = 6

 

Vet ikke om jeg klarte å forklare det bra nok, kanskje noen andre vil prøve?

Endret av Nazgul
Lenke til kommentar

Det var forståelig for meg, Du kan sikkert venlig matte, den funksjonen returnerer resten av et delestykke.(å dividere)

 

912 / 3 = 303

9

1

0

12

12

0

 

så hvis du der hadde brukt % (modulus operatoren) hadde du fått null til svar for det er ingen rest.

repeterer egentlig bare det du sa Nazgul... :)

Lenke til kommentar

Men se foreksempel på denne:

10 % 8 = 2

 

Hvorfor blir den 2? (Er det fordi 2 er det høyeste tallet som går opp i begge? slik at hvis det hadde vært 10 % 9 = 3 ? )

 

 

Forøvrig hvilket formål kan dette brukes som? Jeg klarer ikke helt å se poenget med den :)

Endret av arna
Lenke til kommentar

10 / 8 = 1

10 - 8*1 = 2

 

Normalt så ønsker man å vite hvor mange ganger et tall kan deles på et annet.

10/5 = 2

 

Derimot: Dersom du har 15 biler, og skal dele disse på 6 mennesker, hvor mange bilder får hver person, og hvor mange sitter du igjen med?

15/6 sier du, og får 2,5 i svar.

Javel, hvordan kan noen få en halv bil?

Det går ikke. Alle får 2 biler hver, og du sitter igjen med 3 biler selv.

 

og det er det svaret modulus vil gi deg, nemlig 3.

 

15 % 6 = 3

 

Bruksområder for modulus varier.

Jeg har f.eks. en Javaoppgave nå der jeg skal runde ned et tall til nærmeste integer (heltall) og finne ut hva resten er.

En måte å gjøre dette på er jo selvfølgelig å bruke avrundingsfunksjonene som allerede eksisterer i java.

En annen måte er denne:

double x = 13.21;
int y = (int)x/1;  // (Nå er y lik 13)
double rest = x-y;  // (rest = 0.21)

En tredje måte, er med modulus:

double x = 13.21;
double rest = x % 1;

Tanken er

Alle vet at 13 / 1 = 13

0.21 kan ikke deles på 1, derfor får man 0.21 i rest.

 

 

 

Dette var det enkleste eksempelet jeg kom på i farten, men bruksområdene er mange.

Uansett, modulus brukes når du er interessert i "resten" etter en divisjon, ikke antall ganger et tall kan divideres med et annet.

Endret av Nazgul
Lenke til kommentar

Et ganske vanlig bruksområde for modulusoperatoren(%) er når man skal generere tilfeldige tall:

 

rand() funksjonen i c++ genererer et tall mellom 0 og RAND_MAX(RAND_MAX er vel vanligvis 32767). Hvis man f.eks ønsker seg et tilfeldig tall mellom 1 og 6(terningkast) kan man gjøre det slik:

int random=rand()%6+1;

Lenke til kommentar
Forøvrig er det noen ord og uttrykk jeg ikke finner ut av, hadde vært fint om noen visste det :)

 

Foobar

Analogous

Reusability

Superset

Down in the trenches

Mired

Elicit

Inadvertently

Cascading

Angle

Remainder

Condense

Incremented

Invoked

 

Hva er konsortium / consortium ?

Med unntak av foobar, så vil du nok finne betydningen av de ordene ved å slå opp i en ordbok.

 

'Foobar' brukes ofte som variabelnavn i programmeringseksempler og slike ting, men det har ingen spesiell betydning, man kunne like gjerne brukt et annet navn. RFC 3092 tar for seg historien og betydningen til 'foo', 'bar' og 'foobar', det står ingenting nyttig der, men det er kanskje litt kjekt å vite alikevel.

 

--Axel.

Lenke til kommentar

Et annet godt og meget enkelt eksempel på bruk er hvis man f.eks. ønsker å regne ut hvor mange timer og minutter 68 minutter er ved hjelp av heltallsdivisjon og modulus:

 

 

int var=68;

int t=var/60;
int m=var%60;

printf("%d minutter tilsvarer %d time og %d minutter",var, t, m);

 

Utskriften på skjermen vil da bli:

68 minutter tilsvarer 1 time og 8 minutter

Endret av printf
Lenke til kommentar

hei! a % b betyr som sagt modulus.. teorien bak det er divisjon.. alle tall kan skrives på denne måten

 

a = q * m + r

 

hvor q er antall ganger tallet m går opp i a og r er restenen, dette skriver vi som

 

r = a mod m eller a % m = r

 

eksempel: a = 101, m = 11

 

101 mod 11 = 2

101 % 11 = 2

 

siden 101 = 9 * 11 + 2

 

håper dette gav noen mening ;) dette er vanskelig å fatte i starten, men er lett etterhvert :) bare spør!

Endret av Dustwave
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...