Společný dělitel (2015)
0) Načtěte z klávesnice pomocí funkce scanf dvě celá čísla
oddělená čárkou.
V případě
chybného vstupu (nenačtení dvou parametrů – viz. návratová
hodnota funkce scanf) vytiskne program text „chybne zadani“
a vrátí hodnotu 2.
1) Napište funkci, která najde největšího společného dělitele ze
dvou celých čísel (vhodné pro krácení zlomků) (8;4) -> 4, (8;6) ->
2.
Pro první realizaci použijte funkci modulo (zbytek po
celočíselném dělení). Funkce fsdM – má dva parametry a nsd
výsledek vrací jako návratovou hodnotu.
Pro druhou verzi využijte Eukleidův algoritmus/Euclidean algorithm (wiki). Funkce fsdE – má dva parametry a nsd výsledek vrací jako návratovou hodnotu.
Oba výsledky vytiskněte od začátku řádku. Jednu hodnotu na řádek.
2) Napište funkci, která vytiskne všechny společné dělitele dvou
celých čísel (od největšího, jedničku tisknout bude)
(8;4) -> 4,2 , (48;24) -> 24; 12; 8; 6; 4; 3; 2; 1. Funkce fsd
– má dva parametry, „výsledkem“ je tisk, vrací
počet společných dělitelů (včetně
jedničky, vrácená nula opět značí chybu). Formát tisku budou
celá čísla oddělená středníkem a
mezerou (viz příklad výše), bez odřádkování. Po
tisku odřádkuje.
Počet společných dělitelů vytiskne
volající funkce na samostatný řádek.
Pozn.:
u funkcí (u kterých se předpokládá, že se budou obecně používat) není
vhodné používat operace vstupu a výstupu, pokud nejsou na vstup či
výstup přímo určeny. Přítomnost operací vstupu či výstupu znemožní
použití funkce v režimu „bez obsluhy“ a proto je vhodné
operace vstupu a výstupu umístit mimo vlastní činnost funkce. (V
našem případě by bylo vhodnější vrátit společné dělitele v poli,
které by se ovšem díky proměnnému počtu prvků muselo dynamicky
vytvářet).
3) V případě chybného parametru (z jakéhokoli důvodu nelze vypočítat společný dělitel), vrátí funkce hodnotu nula (hodnota nula většinou (standardně) znamená „v pořádku“. Zde ovšem spojujeme vrácení hodnoty chyby a hodnoty do jednoho parametru, a proto musíme volit hodnotu, která nemůže být výsledkem) a program vytiskne text „chybne zadani“ a odřádkuje. Program postupně zavolá všechny funkce. Program vrací kód 1 v případě, že některá z funkcí vrátila chybový kód (tj nulu).
Hlavní program dejte do souboru mainsd.c, funkce naprogramujte do souboru sd.c (+ k něma sd.h). Pro testování použijte minimálně volání z příkladů uvedených v bodu 1 a 2.
Každý soubor
začne komentářem, ve kterém bude jméno autora, datum a odkaz na
zadání:
/* Autor: Autor Autor
datum: 1.1.2015
www.... */
Hlavičkové soubory budou
ošetřeny proti vícenásobnému načtení.
Zkuste nejprve nakreslit vývojový diagram, zvolit vhodné datové typy a posléze teprve naprogramovat.
Soubory pro testování správnosti naprogramování – rozbalte v adresáři Debug, ve kterém se nachází přeložený exe soubor. Spusťte pomocí konzolového příkazu nsd.cmd. Následně si všímejte (chybových) výpisů.
Poslední změna 2015-02-12