1. ŘEŠENÉ PŘÍKLADY 1.2 PŘÍKLAD 24-2-8-2_DOKONALÉ ČÍSLO Napište program, který má na vstupu přirozené číslo N > 1. Výstupem je informace o tom, zda toto číslo je/není dokonalé. (Dokonalé číslo je takové přirozené číslo, které je rovno součtu všech svých dělitelů, kromě sebe sama.) Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch. int N; try N = Convert.ToInt32(poleN.Text); catch MessageBox.Show("Chyba formátu vstupních dat","chyba"); return; 1
Použijeme následující VD. Podmínka cyklu Příkazy Cyklu předcházejí přiřazovací příkazy: int S = 0; int i = 1; Ve VD je použit cyklus s podmínkou na začátku. Uvnitř cyklu jsou dva příkazy struktura podmíněného příkazu 2
zvětšení proměnné i o jedničku while ((S <= N) && (i <= N/2)) if (N % i == 0) S += i; i++; Po ukončení cyklu následuje podmínka. if (S == N) MessageBox.Show(N.ToString()+" je dokonalé", "Dokonalé číslo"); else MessageBox.Show(N.ToString()+" není dokonalé", "Dokonalé číslo"); 3
Programový kód: using System; using System.Windows.Forms; namespace WindowsApplication1 public partial class oknoprogramu : Form public oknoprogramu() InitializeComponent(); private void tlacitkourci_click(object sender, EventArgs e) int N; try N = Convert.ToInt32(poleN.Text); catch MessageBox.Show("Chyba formátu vstupních dat","chyba"); return; int S = 0; int i = 1; while ((S <= N) && (i <= N/2)) if (N % i == 0) S += i; i++; if (S == N) MessageBox.Show(N.ToString()+" je dokonalé","dokonalé číslo"); else MessageBox.Show(N.ToString()+" není dokonalé","dokonalé číslo"); 4
1.3 PŘÍKLAD 24-2-8-3_EUKLIDŮV ALGORITMUS Pro libovolná dvě přirozená čísla x a y určete jejich největšího společného dělitele (NSD) pomocí Euklidova algoritmu. Použijeme následující VD. 5
Prvním příkazem je načtení hodnot x, y. Pro kontrolu správného formátu hodnot x a y použijeme metodu try-catch. int x, y; try x = Convert.ToInt32(poleX.Text); y = Convert.ToInt32(poleY.Text); catch MessageBox.Show("Chyba formátu vstupních dat", "NSD"); return; Ve VD je použit cyklus s podmínkou na začátku. Uvnitř cyklu je jeden podmíněný příkaz a uvnitř větví podmíněného příkazu je vždy také právě jeden příkaz. Můžeme použít kód se závorkami: while (x!= y) if (x > y) x = x - y; else y = y - x; Správná je v tomto případě i kratší varianta bez závorek: 6
while (x!= y) if (x > y) x = x - y; else y = y - x; Po ukončení cyklu následuje příkaz pro tisk výsledného NSD. MessageBox.Show(Convert.ToString(x), "NSD"); Programový kód: using System; using System.Windows.Forms; namespace WindowsApplication1 public partial class oknoprogramu : Form public oknoprogramu() InitializeComponent(); private void tlacitkovypocti_click(object sender, EventArgs e) int x, y; try x = Convert.ToInt32(poleX.Text); y = Convert.ToInt32(poleY.Text); catch MessageBox.Show("Chyba formátu vstupních dat", "NSD"); return; while (x!= y) if (x > y) x = x - y; else y = y - x; MessageBox.Show(Convert.ToString(x), "NSD"); 7
2. NEŘEŠENÉ PŘÍKLADY 2.2 PŘÍKLAD 24-2-8-6_GENEROVÁNÍ ŘADY ČÍSEL Napište program, který bude generovat řadu celých čísel z daného intervalu. Vstupními daty jsou dolní a horní mez intervalu a číslo, kterým má generovaná řada čísel končit. Ošetřete chyby při zadávání vstupních dat podle vzoru. 8
2.3 PŘÍKLAD 24-2-8-7_PŘEVOD DO LIBOVOLNÉ Napište program, který bude převádět celá čísla do soustavy o zvoleném základu. Základ soustavy může být celé číslo od 2 do 10. Ošetřete chyby při zadávání vstupních dat podle vzoru. 9
2.4 PŘÍKLAD 24-2-8-8_NSD Na vstupu jsou dána dvě přirozená čísla X a Y, pro která platí X Y. Určete jejich největšího společného dělitele (NSD) pomocí upraveného Euklidova algoritmu s následujícím VD. Ošetřete chyby při zadávání vstupních dat podle vzoru. 10
11