Celočíselné dělení

Dělení má v C jednu záludnost. Zkuste odhadnout, co vypíše tento příkaz:

printf("%d\n", 7 / 2);

Vypíše:

3

Ne 3,5, ale 3. Když dělíte dvě celá čísla, je výsledek také celé číslo: C desetinnou část zahodí. Nezaokrouhluje, jen ji odřízne, takže i 19 / 10 je 1 a 2 / 3 je 0. Tomu se říká celočíselné dělení.

Celočíselné dělení odpovídá dělení se zbytkem ze základní školy: kolikrát se jedno číslo vejde do druhého. Zbytek po dělení dává operátor % (programátoři mu říkají modulo):

printf("%d\n", 7 / 2);
printf("%d\n", 7 % 2);
printf("%d\n", 10 % 5);

Vypíše:

3
1
0

Dvojka se do sedmičky vejde třikrát (3 × 2 = 6) a 1 zbude. Když dělení vyjde beze zbytku, je zbytek 0. Podle toho poznáte sudá čísla od lichých: sudé číslo má po dělení dvěma zbytek 0, liché 1.

Nepleťte si dvě role znaku %. Uvnitř formátovacího řetězce začíná formátovací značku, třeba %d. Mimo uvozovky, mezi dvěma čísly, počítá zbytek po dělení. V příkazu printf("%d\n", 7 % 2); je první % součástí %d a druhé počítá.

Celočíselné dělení se hodí třeba na čas. 135 minut je 2 hodiny (135 / 60) a 15 minut (135 % 60):

int minuty = 135;
printf("%d h %d min\n", minuty / 60, minuty % 60);

Vypíše:

2 h 15 min

Operátor % funguje jen s celými čísly. S hodnotou typu double, třeba 7.5 % 2, se program nepřeloží a překladač ohlásí invalid operands to binary expression ('double' and 'int'). Operands (operandy) jsou hodnoty po obou stranách operátoru a double se k % nehodí.

Pokyny

Čtyři kamarádi si objednali pizzy, dohromady nakrájené na 18 kousků. Kolik celých kousků dostane každý? Spočítejte to z proměnných a vypište:

Kousky pro každého: 4

Kolik kousků zbude? Spočítejte to pomocí % a vypište na další řádek:

Zbude kousků: 2

Pizzerie hlásí, že doručení potrvá 75 minut. Pod to vytvořte proměnnou doruceni typu int s hodnotou 75 a vypište ji v hodinách a minutách, spočítaných pomocí / a %:

Doručení za 1 h 15 min

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

7/11