6. cvičení
Probrané příklady:
-
Program pro převod čísel z desítkové do dvojkové soustavy.
Algoritmus výpočtu je pěkně vysvětlen zde.
Bonusový úkol: zobecnění pro převod čísel z desítkové soustavy do soustavy o základu \(b\), kde \(2<b<10\).
#include <stdio.h> #include <stdbool.h> int main() { printf("Zadej cele cislo: "); int cislo; scanf("%d", &cislo); // deklarace pomocneho pole bool pole[32]; // cyklus pro prevod do binarni soustavy int pocet = 0; while (cislo > 0) { pole[pocet] = cislo % 2; cislo = cislo / 2; pocet++; } // vypis vysledku for (int i = 0; i < pocet; i++) printf("%d", pole[pocet - i - 1]); printf("\n"); return 0; }
-
Rozklad přirozeného čísla na součin prvočísel. Prvočísla ukládejte do pole, na konci programu proveďte kontrolu (pronásobení všech prvočísel v poli a porovnání se zadaným číslem) a vypište čísla na obrazovku.
Bonusový úkol: pomocí rozkladu čísla na součin prvočísel určete největšího společného dělitele (NSD) a nejmenší společný násobek (NSN) dvou zadaných čísel.
#include <stdio.h> int main() { printf("Zadej cislo: "); int cislo; scanf("%d", &cislo); // deklarace pole int pole[32]; // cyklus pro rozklad na soucin prvocisel int pocet = 0; int cislo2 = cislo; int k = 2; while (cislo2 >= k) { if (cislo2 % k == 0) { pole[pocet] = k; cislo2 = cislo2 / k; pocet++; } else { k++; } } // vypis vysledku if (cislo > 1) { printf("%d = ", cislo); for (int i = 0; i < pocet - 1; i++) printf("%d * ", pole[i]); printf("%d\n", pole[pocet - 1]); } else { printf("%d = %d\n", cislo, cislo); } return 0; }
Domácí úkol
Naprogramujte Euklidův algoritmus pro určení největšího společného dělitele dvou přirozených čísel.
Program by měl po spuštění fungovat např. takto:
Zadej dve prirozena cisla: 16 24
Nejvetsi spolecny delitel techto cisel je 8.
Bonusový úkol: Program zobecněte pro určení největšího společného dělitele libovolného počtu přirozených čísel. Po spuštění by měl fungovat např. takto:
Zadej pocet cisel: 4
Zadej 4 prirozena cisla: 16 24 38 7
Nejvetsi spolecny delitel techto cisel je 1.
Výsledný zdrojový soubor (soubor.c
) odevzdávejte na mou emailovou adresu do 20. 10. 2019, 24:00
CEST. Pokud narazíte na problém a budete potřebovat poradit, neopisujte od
kolegů, ale požádejte mě o radu (mailem, na cvičení nebo na konzultaci). Úkol je
vhodné začít vypracovávat co nejdřív, aby se tyto problémy stihly vyřešit před
termínem.