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; }
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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 Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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");
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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"); } } }
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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.
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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 != { if (x > { x = } else { y = }
y) y) x - y;
y - x;
}
Správná je v tomto případě i kratší varianta bez závorek: Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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"); } } }
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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.
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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.
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 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.
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 10
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Název projektu: Výuka programování na střední škole pro praxi, Registrační číslo projektu: CZ.1.07/1.1.32/02.0007 11