Počítání
Druhý vzor počítá: kolik čísel splňuje nějakou podmínku? Vypadá podobně jako sčítání, jen místo hodnoty přičítáte 1, a to jen tehdy, když to dovolí if.
Každý sedmý návštěvník muzea dostane pohlednici zdarma. Kolik pohlednic muzeum rozdá, když přijde 50 návštěvníků?
int pohlednice = 0;
for (int navstevnik = 1; navstevnik <= 50; navstevnik++) {
if (navstevnik % 7 == 0) {
pohlednice++;
}
}
printf("Pohlednice: %d\n", pohlednice);Pohlednice: 7Počítadlo pohlednice začíná před cyklem na 0. Cyklus projde všechny návštěvníky a if rozhodne, jestli daného návštěvníka započítat: navstevnik % 7 == 0 platí, když je zbytek po dělení sedmi 0. pohlednice++ se provede jen pro návštěvníky 7, 14, 21, 28, 35, 42 a 49, takže na konci má počítadlo hodnotu 7. Výsledek zase vypíšete až za cyklem.
Všimněte si dvou párů složených závorek: pohlednice++ je v bloku if, který je v bloku cyklu. Když se pohlednice++ ocitne mimo if (ale pořád v cyklu), program započítá každého návštěvníka a vypíše Pohlednice: 50.
Jeden cyklus může počítat i několik věcí najednou, každou ve vlastním počítadle. S if a else se každý návštěvník započítá právě jednou, buď do jednoho, nebo do druhého počítadla:
int pohlednice = 0;
int bez = 0;
for (int navstevnik = 1; navstevnik <= 50; navstevnik++) {
if (navstevnik % 7 == 0) {
pohlednice++;
} else {
bez++;
}
}
printf("Pohlednice: %d\n", pohlednice);
printf("Bez pohlednice: %d\n", bez);Pohlednice: 7
Bez pohlednice: 437 + 43 je 50: každý návštěvník je započítaný právě jednou. Takový součet počítadel je rychlá kontrola, že jste počítali správně.
Jak psát:
Pokyny
Ulice má domy s čísly od 1 do POCET_DOMU. Domy s lichými čísly stojí na levé straně ulice, domy se sudými čísly na pravé. Spočítejte domy na levé straně: vytvořte proměnnou vlevo s hodnotou 0, projděte čísla od 1 do POCET_DOMU cyklem for a pro každé liché číslo zvyšte vlevo o 1. Číslo je liché, když je zbytek po jeho dělení dvěma roven 1. Za cyklem vypište výsledek jako Levá strana: 13.
Ve stejném cyklu spočítejte i domy na pravé straně: před cyklem vytvořte proměnnou vpravo s hodnotou 0 a zvyšujte ji ve větvi else. Za cyklem vypište na další řádek Pravá strana: 12.
Začněte programovat zdarma
6/11