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:
3Ne 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
0Dvojka 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 minOperá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í.
Jak psát:
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: 4Kolik kousků zbude? Spočítejte to pomocí % a vypište na další řádek:
Zbude kousků: 2Pizzerie 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 minZačněte programovat zdarma
7/11