Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
VETVENIE PROGRAMU, RIEŠENIE ÚLOH
Programovať sa naučíme najviac vtedy, ak vytvoríme veľa funkčných programov, odladíme
ich, pochopíme ich činnosť. V tejto kapitole sa naučíme si ukážeme príkazy pre prípady, ak
program narazí na viaceré možnosti pokračovania.
Príklad 1 (Lomená funkcia):
V predošlej kapitole sme vypisovali tabuľku hodnôt funkcie v istom intervale. Ak by sme však
chceli vytvoriť tabuľku napríklad pre funkciu y =
x
pre všetky celé čísla v intervale
x −3
<-10,10>, problém nastane v bode x=3, keďže v tomto bode funkčná hodnota neexistuje
a vtedy by program vykázal chybu delenia nulou. Preto musíme pre x=3 vykonať iný príkaz
ako pre ostatné x z intervalu. Takýto príkaz sa nazýva rozhodovací príkaz, resp. príkaz
vetvenia.
Príkaz vetvenia (rozhodovací príkaz) - úplný:
if podmienka then príkaz_1 else príkaz_2;
•
Podmienka – je ľubovoľný logický výraz t.j. výraz, ktorého výsledkom je buď pravda
(true), alebo nepravda (false), napr.:
o A > B .......... ( Je A väčšie alebo rovné ako B ? )
o x<>3 ……... ( Je x rôzne od 3 ? )
o x = 0 ............ ( Je x rovné nule ? )
•
prikaz_1 – je ľubovoľný príkaz, ktorý sa vykoná vtedy, ak
podmienka platí (má
hodnotu pravda - true) (pred else nesmie byť bodkočiarka, keďže príkaz ešte neskončil)
•
prikaz_2 – je ľubovoľný príkaz, ktorý sa vykoná vtedy, ak podmienka neplatí (má
hodnotu nepravda - false)
•
Vykoná sa práve jeden z príkazov prikaz_1 a prikaz_2 podľa toho, akú platnosť má
podmienka.
Príklady:
o if A > B then max := A else max := B;
o if x <> 0 then vys := s/x else writeln (’ nemozeme delit’);
o if sqr(c) = sqr(a) + sqr(b) then writeln (’trojuholnik je pravouhly’)
else writeln (’trojuholnik nie je pravouhly’);
1
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
if (a>b) and (b>c) then writeln(’ a je väčšie ako c ’);
if (x>0) or (y>0) then z:=x*y;
o
o
Riešenie príkladu 1:
Pre každé x zistíme, či to náhodou nie je „3“ a vtedy nebudeme realizovať výpočet funkčnej
hodnoty, ale vypíšeme, že hodnota neexistuje.
program tabulka_hodnot_funkcie;
var y: real;
x: integer;
begin
writeln (' x
y ');
writeln ('________________')
for x:=-10 to 10 do
if x<>3 then
begin
y:= x /(x-3);
writeln(x:5, y:10:4);
end
else
writeln (x:5, 'hodnota neexistuje');
end.
V príklade 1 sme použili úplný príkaz vetvenia ktorý má časť „then“ aj „else“, pričom sa
vykoná práve jeden z príkazov prikaz_1 a prikaz_2 podľa toho, akú platnosť má
podmienka. Existuje aj príkaz, ktorý má len časť „then“.
Príkaz vetvenia - neúplný:
if podmienka then príkaz;
Neúplný príkaz nemá časť „else“. Ak podmienka platí, vykoná sa prikaz, ak podmienka
neplatí, nerobí sa nič. Príkaz použijeme vtedy, ak chceme vykonať istý príkaz len za určitých
podmienok.
Príklad:
o if A > B then
begin
pom := A; A := B; B := pom
end;
{ Príkazmi pom := A; A := B; B := pom vymeníme hodnoty premenných A a B
pomocou tretej pomocnej premennej}
o if x <> 0 then writeln (x);
2
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
Príklad 2 (Basketbalista):
Hľadáme basketbalistu triedy – najvyššieho žiaka triedy, trieda má daný počet žiakov. Teda
hľadáme maximálnu výšku zo všetkých výšok žiakov.
Riešenie príkladu 2: Pre každú výšku žiaka zistíme, či nie je náhodou vyššia ako doteraz
najvyššia výška. Na začiatku riešenia môžeme za maximálnu výšku považovať buď výšku
prvého žiaka, alebo do premennej „Max“, v ktorej si najvyššiu výšku budeme pamätať,
vložíme na začiatku veľmi malé číslo, aby hneď výška prvého žiaka bola väčšia.
Keďže o každom žiakovi budeme zisťovať jeho výšku a porovnávať jeho výšku s doposiaľ
maximálnou, použijeme cyklus „for“:
Vstup:
N – počet žiakov triedy
V – výška istého žiaka
Max – najväčšia výška
Por – poradové číslo žiaka s maximálnou výškou
program basketbalista;
var V, Max: real;
N,i,Por: integer;
begin
writeln ('Kolko ziakov je v triede?');
readln (N);
Max:= 0;
for i:=1 to N do
begin
writeln ('Zadaj vysku ',i,'. ziaka' );
readln(V);
if V>Max then
begin
Max:=V;
Por:=i;
end;
end;
writeln('Basketbalista ma vysku - ', Max);
writeln('Jeho poradove cislo je - ', Por);
end.
Komentár
{ tu môže byť ľubovoľný text v jednom riadku }
(* Tento komentár má vyššiu prioritu, môže
„zakomentovať“ aj { tento komentár } *)
Príklad a použitie:
Použitie komentára si ukážeme hneď na nasledujúcich príkladoch (červeným písmom).
3
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
Úloha 1 (Meteorologická stanica):
Na meteorologickej stanici merali pravidelne teplotu v tej istej hodine každý deň. Štatisticky
vyhodnoťte merania za mesiac december – zistite, v ktorý deň v mesiaci
bola najmenšia
a v ktorý najväčšia teplota, aká bola priemerná teplota v mesiaci december.
Vstup:
T – teploty v jednotlivé dni v mesiaci december
Výstup:
Priemer – priemerná teplota v mesiaci
MaxT – najväčšia teplota v mesiaci
PorMax – poradové číslo dňa s maximálnou teplotou
MinT – najmenšia teplota v mesiaci
PorMin – poradové číslo dňa s minimálnou teplotou
Pomocná premenná: s – súčet teplôt
program teploty_december;
var T, s, MaxT, MinT, Priemer: real;
i, PorMin, PorMax: integer;
begin
MaxT:= -200; MinT:= 200; (* pociatocnu hodnotu MaxT dame velmi
malu, aby hned prva teplota bola
vacsia a MinT naopak velmi velku*)
for i:=1 to 31 do
begin
writeln ('Zadaj nameranu teplotu ',i,'. dňa' );
readln(T);
s:=s+T;
{vypocet suctu teplot}
if T>MaxT then {ak je teplota v isty den vyssia ako MaxT}
begin
MaxT:=T;
PorMax:=i;
end
else
if T<MinT then {ak nie je vyssia, moze byt mensia}
begin
{ ako MaxT}
MinT:=T;
PorMin:=i;
end
end;
Priemer:=s/31;
{výpočet priemeru teplôt}
writeln('Maximalna teplota bola v ',PorMax, '. den:', Max);
writeln('Minimalna teplota bola v ',PorMin, '. den:', Min);
writeln('Priemerna teplota bola: ', Priemer:6:2);
end.
Úloha 2 (Druhý basketbalista):
Basketbalista triedy ochorel, nájdite jeho náhradníka, nájdite teda poradové číslo a výšku
druhého najvyššieho žiaka triedy. Pomôcka: Uvedomte si, že pri hľadaní výšky druhého
4
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
najvyššieho žiaka (max2) si musíme pamätať aj výšku najvyššieho žiaka (max1). Výška istého
žiaka (vyska) teda môže spĺňať 3 možnosti:
1.
vyska > max1 – vtedy sa stáva max1 až druhou najvyššou výškou max2 a vyska sa stáva
prvou najvyššou výškou max1
2.
max1 > vyska > max2 – vtedy sa vyska stáva druhou najvyššou výškou max2
3.
vyska < max2 – vtedy nás vyska nezaujíma
program druhy_basketbalista;
var Vyska, Max1,Max2: real;
N,i,Por1,Por2: integer;
begin
writeln ('Kolko ziakov je v triede?');
readln (N);
Max1:= 0; Max2:=0;
for i:=1 to N do
begin
writeln ('Zadaj vysku ',i,'. ziaka' );
readln(Vyska);
if Vyska>Max1 then
begin
Max2:=Max1; {pozor, nesmieme vymeniť}
Max1:=Vyska; {poradie týchto príkazov}
Por2:=Por1;
Por1:=i
end
else
if Vyska>Max2 then
begin
Max2:=Vyska;
Por2:=i;
end;
end;
writeln('Druhy basketbalista ma vysku - ', Max2);
writeln('Jeho poradove cislo je - ', Por2);
end.
Príklad 3 (Prázdny „hviezdičkový“ štvorec):
V 1. kapitole sme kreslili štvorec a obdĺžnik z hviezdičiek. Skúsme nakresliť z hviezdičiek
prázdny štvorec s premenlivou stranou a. Ak napríklad zadáme stranu štvorca a=5, program
vykreslí štvorec:
* * * * *
*
*
*
*
*
*
* * * * *
Riešenie: Plný štvorec sme kreslili po riadkoch, pričom všetky boli rovnaké. Teraz si
všimnime, že prvý a posledný riadok je rovnaký ako pred tým, ale druhý tretí,... až
5
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
predposledný majú vykreslenú len prvú a poslednú hviezdičku. Musíme sa teda pri kreslení
riadku opýtať, či nie je prvý, alebo posledný, ktorý vykreslíme samými hviezdičkami, alebo
patrí medzi tie ostatné, kde budeme vykresľovať len jednu hviezdičku na začiatku a na konci,
a nakreslíme medzi nimi patričný počet medzier.
program prazdny_stvorec;
var a,i,j: integer;
begin
writeln ('Zadaj stranu stvorca z hviezdiciek?');
readln (a);
for i:=1 to a do
{cyklus pre vykreslenie i-teho riadku}
begin
if (i=1) or (i=a)then
{prvy a posledny riadok}
for j:=1 to a do write (' * ')
else
{ostatne riadky}
begin
write(' * ');
for j:=2 to a-1 do write ('
')
write(' * ');
end;
writeln;
{prazdny prikaz na odriadkovanie}
end;
end.
Príklad 4 (Kvadratická rovnica):
Vyriešime kvadratickú rovnicu ax2+bx+c=0 podľa vzorca x1, 2 =
− b ± b 2 − 4ac
. Počet
2a
koreňov závisí od tzv. diskriminantu D=b2-4ac, ktorý je pod odmocninou. Zopakujme si, že ak
1. D<0, odmocnina zo záporného neexistuje, preto rovnica nemá riešenie
2. D=0, odmocnina z nuly je 0, preto rovnica má jedno riešenie – x1=-b/(2*a)
3. D>0, odmocnina z kladného čísla je kladné číslo, preto rovnica má dve riešenia –
x1:=(-b +√D)/(2*a), x2:=(-b -√D)/(2*a)
Pri riešení rovnice musíme urobiť úplnú diskusiu pre všetky tri prípady, čiže použijeme
nasledujúcu („nepaskalovsky“ zapísanú) konštrukciu:
If
D<0 then „nemá riešenie“
else if D=0 then „jedno riešenie“
else „dve riešenia“´
6
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
program kvadraticka_rovnica;
var a,b,c: integer;
x1,x2,D: real;
begin
writeln ('Zadaj koeficienty kvadratickej rovnice – a,b,c');
readln (a,b,c);
D:= b*b-4*a*c;
if D<0 then writeln ('rovnica nema riesenie')
else if D=0 then begin
x1=-b/(2*a);
writeln ('jedno riešenie:', x1);
end
else begin
x1:=(-b +√D)/(2*a);
x2:=(-b -√D)/(2*a)
writeln ('dve riešenia:', x1,x2);
end;
end.
Úloha 3 (Lineárna rovnica):
Podobným spôsobom vyriešte lineárnu rovnicu ax+b=0 s úplnou diskusiou na riešiteľnosť
vzhľadom k vstupným koeficientom a, b. Rozoberte prípady, ak a=0, resp. b=0.
Pripomenieme si:
1. a=0 a súčasne b=0, takáto rovnica má nekonečne veľa riešení
2. a=0 a súčasne b<>0, tak rovnica nemá riešenie
3. a<>0, rovnica má jedno riešenie x=-b/a
program linearna_rovnica;
var a,b: integer;
begin
writeln ('Zadaj koeficienty linearnej rovnice – a,b');
readln (a,b);
if (a=0) and (b=0) then writeln ('rovnica ma veľa rieseni')
else
if (a=0) and (b<>0) then writeln ('rovnica nema riesenie')
else
writeln ('jedno riešenie:', -b/a:8:2);
end.
Príkaz vetvenia - CASE:
case premenna of
hodnora_1: príkaz_1;
hodnora_2: príkaz_2;
.
.
hodnora_k: príkaz_k
7
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
else prikaz_m;
end;
Príkaz „CASE“ by sme mohli nazvať viacnásobným príkazom „IF“. Vykoná sa len ten príkaz
z prikaz_1, prikaz_2, až prikaz_k, pre ktorý premenna nadobúda niektorú
z hodnôt hodnota_1, hodnota_2, až hodnota_k. Ak premenna sa nerovná ani
jednej z hodnôt, vtedy sa vykoná prikaz_m. Časť else môžeme aj vynechať. Lepšie príkaz
pochopíme na príklade:
Príklad 5 (Dni v týždni):
Vytvoríme jednoduchý program, ktorý nám vypíše textovú alternatívu pre poradové číslo dňa
v týždni, napr. pre vstupné číslo 3 nám vypíše „streda“
program dni_v_tyzdni;
var por_cis: integer;
begin
writeln ('Zadaj poradove cislo dna v tyzdni');
readln (por_cis);
case por_cis of
1 : writeln ('Pondelok');
2 : writeln ('Utorok');
3 : writeln ('Streda');
4 : writeln ('Stvrtok');
5 : writeln ('Piatok');
6 : writeln ('Sobota');
7 : writeln ('Nedela')
else writeln ('zadal si nespravne cislo')
end;
end.
Úloha 4 (Slovné hodnotenie):
Podobným spôsobom ako sme vyriešili príklad 5 s použitím príkazu „case“ vyriešte
aj nasledujúcu úlohu: Napíšte program, ktorý na základe známky (1,2,3,4 alebo 5)
pre žiaka vypíše slovné hodnotenie (výborný, chválitebný, dobrý, dostatočný, nedostatočný).
program slovne_hodnotenie;
var znamka: integer;
begin
writeln ('Zadaj znamku ziaka');
readln (znamka);
case znamka of
1 : writeln ('vyborny');
2 : writeln ('chvalitebny');
3 : writeln ('dobry');
4 : writeln ('dostatocny');
5 : writeln ('nedostatocny')
else writeln ('zadal si nespravnu znamku')
end;
end.
8
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
Úloha 5 (Mesiace a počty dní):
Do tretice príkladov využitia príkazu „case“: Program na základe počtu dní v mesiaci
vypíše mená všetkých mesiacov so zadaným počtom dní.
program mesiace;
var poc_dni: integer;
begin
write ('Zadaj počet dni v mesiaci: ');
readln (poc_dni);
case poc_dni of
28 : writeln ('februar');
29 : writeln ('februar - priestupny');
30 : writeln ('april,jun, september, november');
31 : writeln ('januar, marec, maj, jul, august,
oktober, december');
end;
end.
Úloha 6 (Pravouhlý trojuholník):
Zistite, či tri vstupná čísla tvoria pravouhlý trojuholník (pre ich strany platí
Pytagorova veta – c2=a2+b2, kde c je najdlhšia strana trojuholníka).
program pravouhly_trojuholnik;
var a,b,c: integer;
begin
writeln ('Udajte odvesny a preponu trojuholníka');
readln (a,b,c);
if c*c=a*a+b*b then writeln ('trojuholník je pravouhlý')
else writeln ('trojuholník nie je pravouhlý');
end.
Porozmýšľajte, ako by sme museli program doplniť, ak by strana c nebola najväčšia a museli
by sme zisťovať, ktoré zo vstupných čísel je prepona. Porovnajte s nasledujúcim fragmentom
programu a zistite, čo vypíše:
if a>b then if b>c then write(a)
else if a>c then write(a)
else write(c)
else if b<c then write(c)
else write(b)
.....
.....
.....
.....
.....
a>b>c
a>c>b
c>a>b
c>b>a
b>a>c resp. b>c>a
Úloha 7 (Susedné čísla):
Súčin štyroch po sebe idúcich čísel je M (napr. 3024). Nájdite tieto čísla.
V matematike by sme túto úlohu riešili asi inak , ale ak necháme počítať počítač, tak
ho tentokrát nebudeme „ľutovať“ a dáme mu vyskúšať všetky vhodné štvorice za sebou idúcich
čísel:
Poznámka: Za sebou idúce čísla sú: i, i+1, i+2, i+3, ...
9
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
program sucin_cisel;
var M: integer;
begin
write ('Zadajte cislo M: ');
readln (M);
for i:=1 to M do
if i*(i+1)*(i+2)*(i+3)= M then
writeln ('hladane cisla: ',i,' ',i+1, ' ',i+2, ' ',i+3);
end.
Úloha 8 (Šatistika):
Ideme štatisticky vyhodnotiť plynúce čísla. Z klávesnice budeme načítavať N čísel
a zistíme, koľko z čísel bolo kladných a párnych. Štatistiku vypíšeme na záver,
vypočítame aj ich percentuálny podiel.
program statistika_cisel;
var cislo, pocet, N, i: integer;
begin
write ('Zadajte počet cisel: ');
readln (N);
for i:=1 to N do
readln(cislo)
if ( cislo>0 ) and cislo mod 2 = 0 then inc(pocet);
end;
writeln('Pocet kladnych parnych cisel: ', pocet);
writeln('Percentualny podiel: ', pocet/N*100:5:1)
end.
Úloha 9 (Prvočíslo):
Dlho matematici všetkých čias skúmali prvočísla – čísla deliteľné len číslom 1
a sebou samým. O malých číslach ľahko zistíme, či sú prvočíslami, ale o vačších sa
táto vlastnosť zisťuje zdĺhavejšie. Zostavme program, ktorý to zistí veľmi rýchlo.
Návod: Existuje veta, ktorá hovorí, že pre číslo C stačí vyskúšať všetkých potenciálnych
deliteľov od 2 do celého čísla √C. Ak sa medzi týmito číslami nenájde deliteľ, znamená to, že
číslo C je prvočíslo. Využite túto vetu! (odmocnina čísla - funkcia sqrt, celá časť – funkcia
trunc)
program prvocislo;
var cis, del, poc_del: integer;
begin
write ('Zadajte cele kladne cislo: ');
readln (cis);
poc_del=0;
for del:=2 to cis div 2 do
if cis mod del =0 then inc(poc_del);
if poc_del = 0 then writeln ('cislo ',cis,' je prvocislo')
else writeln ('cislo ',cis,' nie je prvocislo');
end.
10
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
Úloha 10 (Veľa prvočísel):
Ak by sme ale chceli vypísať všetky prvočísla od 2 napr. do 1000, musíme predošlé
riešenie upraviť. Vyskúšame všetky čísla a ak počet deliteľov okrem 1 a seba
nejakého čísla je 0 (nemá deliteľov), tak ho vypíšeme. (Počítajte s tým, že prvočísel je veľa,
vypisujte ich do riadku, oddeľte jednou medzerou, alebo vypíšte ich na určitý počet miest bez
desatinnej časti.)
program prvocisla;
var cis, del, poc_del: integer;
begin
for cis=2 to 1000 do
begin
poc_del=0;
for del:=2 to cis div 2 do
if cis mod del =0 then inc(poc_del);
if poc_del = 0 then writeln (cis,' ')
end;
end.
Ako inak získať všetky prvočísla si ukážeme v tzv. (Eratostenovo sito) ďalších lekciách.
Úloha 11* (Dokonalé číslo):
Okrem prvočísel boli objavené aj ďalšie „milé“ vlastnosti čísel – napr. ak sa číslo
rovná súčtu všetkých svojich deliteľov okrem seba samého (do súčtu teda zarátame aj
jednotku), voláme ho dokonalé. Pre dané vstupné číslo zistite, či je dokonalé.
program dokonale;
var cis, del, poc_del, suc_del: integer;
begin
write ('Zadajte cele kladne cislo: ');
readln (cis);
poc_del:=0;
suc_del:=0;
for del:=1 to cis div 2 do
if cis mod del =0 then suc_del:= suc_del + del;
if suc_del = cis then writeln ('cislo ',cis,' je dokonale')
else writeln ('cislo ',cis,' nie je dokonale');
end.
Podobne ako v úlohe 11 nájdite viac dokonalých čísel napr. v intervale od 10 do 1000.
Modifikujte program z úlohy 11.
11
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
Neriešené úlohy:
1. Načítajte od používateľa tri čísla, usporiadajte a vypíšte ich od najmenšieho po
najväčšie, zistite, či sú to strany trojuholníka. Ak áno, zistite, či je pravouhlý.
2. V krasokorčuľovaní sa známkuje tak, že sa vynechá najlepšia a najhoršia známka a zo
zvyšku známok sa urobí aritmetický priemer. Zostavte program na výpočet výslednej
známky z postupnosti N známok.
3. Vytvorte program, ktorý vyhodnotí N hodnôt IQ žiakov do výberovej triedy, vypočíta
priemerné IQ a vypíše, koľko žiakov má IQ z intervalu 90..100, 101..110, 111..120, nad
120.
4. Súčet štyroch kladných celých čísel C1<C2<C3<C4 sa rovná číslu K (0<K<27). Nájdite
všetky štvorice čísel, ktoré podmienku spĺňajú.
5. Vypíšte všetky štvorciferné čísla deliteľné 5, ktorých súčet prvých troch cifier je
deliteľný tromi. (Všetky štvorciferné čísla vytvorte pomocou 4 vnorených cyklov.)
6. Načítajte hodnoty premennej X a K. Vypíšte na obrazovku tabuľku, v ktorej 1. stĺpec
obsahuje hodnoty 1 až X, druhý stĺpec dvojnásobky týchto čísel, tretí stĺpec trojnásobky
týchto čísel, a t.ď až K-ty stĺpec K-násobky týchto čísel. napr. ak zadáme X=10 a K=3,
získame tabuľku:
x
2*x 3*x
1
2
3
2
4
6
…
10
20
30.
7. Koľko krát sa v zápise všetkých trojciferných čísel vyskytuje číslica 7?
8. Čo vykreslí program KRESLI?
program KRESLI;
var i,j,n:integer;
begin
readln(n);
for i:=1 to n do
begin
for j:=2*n-i downto 1 do write('X');
writeln;
end;
end;
12
Elearningový kurz – Základy programovania v jazyku Turbo Pascal
Gymnázium P. Horova
ZADANIE 3.1:
Zostavte program pre vyhodnotenie písomky študentov. Program načíta celkový počet bodov,
potom jednotlivé body N žiakov triedy, pre každého žiaka vypočíta úspešnosť v % a vyhodnotí
známku z písomky s istou stupnicou (napr. 1 - 100% až 90%, 2 - 89% až 75%, 3 - 74% až 60%,
4 - 59% až 44%, 5 - 43% až 0%. Využite príkaz case a možnosti zápisu intervalu celých čísel
90..100, 75..89, až 0..43, zjednodušíte si tým zápis kódu programu. )
vstup:
N – počet žiakov
Max – maximálny počet bodov z písomky
D – dosiahnutý počet bodov u každého žiaka
výstup:
P – percento úspešnosti žiaka a známka
ZADANIE 3.2:
Trojciferné číslo môžeme vytvoriť z cifier následovne - napr. 752=7*100+5*10+2*1. Nájdite
všetky Armstrongove trojciferné čísla – čísla, ktorých súčet tretích mocnín všetkých svojich
cifier dáva seba samého teda pôvodné číslo. Navrhnite najjednoduchšie riešenie.
(Vstupné a výstupné údaje si navrhnite sami.)
ZADANIE 3.2:
Z klávesnice budeme čítať N trojíc celých kladných čísel. Program nám pre každú trojicu čísel
vypíše, či sa z nej dá zostrojiť trojuholník, alebo nie. Nakoniec vypíše štatistiku – z koľkých sa
dal trojuholník zostrojiť a z koľkých nie. (Len si pripomeňme, že trojuholník sa dá zostrojiť, ak
platí tzv. trojuholníková nerovnosť – súčet ľubovoľných dvoch strán je väčší ako strana tretia.)
(Vstupné a výstupné údaje si navrhnite sami.)
13
Download

VETVENIE PROGRAMU, RIEŠENIE ÚLOH