#include // PROCEDURA: (nema zadny navratovy typ -> klicove slovo void, neobsahuje return) // Precteni zbytku vstupniho bufferu konzole (tj. do konce radky) void readln() { while (getchar() != '\n') ; } // FUNKCE: (ma navratovy typ int, musi jej vracet pomoci return) // Vypocti faktorial zadaneho cisla // Funkce ziskava na vstupu cele cislo a, pro nez spocita a vrati faktorial. // Funkce je definovana pouze pro a >= 0, jinak nezarucujeme vysledek int faktorial(int a) { // Osetrime fakt, ze faktorial 0 je 1 if (a == 0) { return 1; } else { int i; // Pomocna promenna, kterou budeme postupne // snizovat a prenasobovat ji a // Zopakujeme si zde cyklus for - jeho syntaxe je nasledujici: // for (prirazeni, ktere provest jednou na zacatku; podminka, ktera musi byt splnena pro kazdy pruchod cyklem; co provest po provedeni kazdeho tela) // { // telo // } for (i = a-1; i > 0; --i) // i-- je to same jako i = i - 1 { // Prenasobime a postupne vsemi cisly a-1, a-2, a-3, ..., 1 a = a * i; } // Ziskanou hodnotu vratime zpet volajici funkci return a; } } int main() { // Ziskame ze vstupu cele cislo int vstup; scanf("%d", &vstup); // Precteme zbytek radky na vstupu (tj. za zadanym cislem) readln(); // Overime, zda je kladne if (vstup < 0) { printf("Faktorial je definovan jen pro nezaporna cisla.\n"); } else { // Pokud bylo, vypiseme jeho hodnotu // Jak vidime, funkci faktorial() muzeme dosadit jako argument funkce printf(). // (Ma totiz navratovy typ integer.) printf("%d\n", faktorial(vstup)); } // Nechame uzivatele precist si vystup a zakoncit ENTERem readln(); }