5 svar
211 visningar
Elias93 behöver inte mer hjälp
Elias93 130
Postad: 8 apr 2019 10:35

Vad gör % 10

Hej!

Varför plockar detta ut talet vid plats index?

 

Vad gör % 10 ?

Jag tänkte att det delar med tio heltalsdivition och sparar resten men vet inte varför hela uttrycket fyller sitt syfte då:

int n_digits(int number) { //detta ska räkna ut hur många siffror som finns i ett tal.
int i = 0;
while (0 < number) {
number = number / 10;
i++; }

int get_digit_at_index(int number, int index) {
int i = n_digits(number);
while (index < i - 1) {
number = number / 10;
index++;
}
number = number % 10;
return number;
}

Laguna Online 30711
Postad: 8 apr 2019 10:41

Har du provat att köra "för hand" på papper med någon typisk input, t.ex. get_digit_at_index(3127, 2)?

Om du menar att du inte alls vet vad operatorn % gör, så ger den resten när man delar den första operanden med den andra. T.ex. 943 % 10 blir 3.

Elias93 130
Postad: 8 apr 2019 10:44

Vad är skillnaden mellan % 1 och % 10 ?

Jag vet att det ger resten men vad gör siffran efter % ? 

Laguna Online 30711
Postad: 8 apr 2019 10:46
Elias93 skrev:

Vad är skillnaden mellan % 1 och % 10 ?

Jag vet att det ger resten men vad gör siffran efter % ? 

% 1 ger resten när man delar med 1, och det blir ingen rest, så det är alltid 0.

Elias93 130
Postad: 8 apr 2019 10:47 Redigerad: 8 apr 2019 10:51

ah nu börjar jag förstå. Det tar delat med 10 i loopen tills index är samma som antalet nummer som ännu finns kvar efter /10. Sen efter loopen plockar det ut en tiondel av talet, alltså den sista siffran i nummret som är kvar.

Stämmer det?

Laguna Online 30711
Postad: 8 apr 2019 14:02
Elias93 skrev:

ah nu börjar jag förstå. Det tar delat med 10 i loopen tills index är samma som antalet nummer som ännu finns kvar efter /10. Sen efter loopen plockar det ut en tiondel av talet, alltså den sista siffran i nummret som är kvar.

Stämmer det?

Det stämmer.

Svara
Close