minulý díl pro mě byl velkým zklamáním. Navzdory bouřlivé diskuzi nepředstavil nikdo kromě faraona své řešení.
Za neúspěch můžu nadávat jen sám sobě. Nemálo lidí odradily striktně specifikované zadání. Proto bude dnešní díl pojatý trošku jinak. Nebudete tvořit celý program, ale pouze doplňovat kód funkcí.
Dobrý programátor musí umět používat knihovny. Občas ale není na škodu si cvičně něco zkusit sám.
Zadání
Kód: Vybrat vše
// Kod v jazyce C
float my_pow(float x, const int n, int *err);
float my_sqrt(float x, int *err);
Funkce my_pow počítá n-tou mocninu (zadanou parametrem n, n je celé číslo) reálného čísla zadaného parametrem x. Funkce vrací reálné číslo.
Funkce my_sqrt počítá druhou odmocninu z reálného čísla zadaného parametrem x. Funkce vrací reálné číslo.
I tentokrát je nachystaný bonusový úkol:
Kód: Vybrat vše
// Kod v jazyce C
float my_nth_root(float x, static int n, int *err)
Funkce my_nth_root počítá n-tou odocninu (zadanou parametrem n, n je celé číslo) reálného čísla zadaného parametrem x. Funkce vrací reálné číslo.
U všech funkcí je jako parametr ukazatel *err, který slouží pro vyjádření úspěchu či neúspěchu operace z důvodu chybných vstupních hodnot (0 úspěch, 1 neúspěch).
Předpokládejte, že existuje globální konstantní proměnná const flooat e, která je inicializovaná na určitou hodnotu určující maximální přípustnou chybu výpočtu (například 1e-12). Tam, kde je to vhodné ji použijte.
Zamyslete se a napište do komentářů, jaké výhody a nevýhody přináší použití globální konstantní proměnné místo #define.
Řešení
Dopuručený je opět jazyk C. Pokud vám nevyhovuje, v klidu použíjte jiný jazyk. Je zakázáno použití funkcí matematických knihoven.
V případě použití jiného jazyka si smíte zadání v nutné míře upravit. Vaše úpravy však musíte řádně popsat.
Nejčastěji se to bude týkat jazyků, které neumožňují práci s ukazateli/referencemi. V takovém případě navrhněte jiný vhodný způsob řešení.
Kód posílejte do komentářů nebo přes pastebin, github, whatever...
Vzorové řešení bude později uveřejněno. Nedočkavci si mohou říci o zaslání kódu do soukromých zpráv.
Mnoho zdaru při řešení!