Home page

PC2A home page

Výuka home page




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