1. Samostatná domácí práce
Předmět: Algoritmizace
Název: Vlastnosti trojúhelníka
Vypracoval: Alexandr Slabý Třída: 2E
Datum odevzdání: 31.12.2005
2. Zadání:
Sestavit algoritmus, který ze tří zadaných čísel urči:
Zda je možné sestrojit trojúhelník se stranami zadaných délek
Pokud ano, určí dále, zda trojúhelník bude
rovnoramenný
rovnostranný
pravoúhlý
obecný
včetně možných kombinací.
Algoritmus vyjádřit vývojovým diagramem a programem v DELPHI.
Teoretický rozbor:
Trojúhelník je možné sestrojit, pokud součet délek kterýchkoliv dvou stran je je větší, než
strana třetí.
Trojúhelník je rovnostranný, pokud jsou délky všech tří stran trojúhelníka stejné.
Trojúhelník je rovnoramenný, pokud kterékoliv dvě strany jsou stejné a současně jiné než
strana třetí.
Trojúhelník je pravoúhlý, pokud pro něj platí pythagorova věta, tj. součet mocnin délek dvou
stran je stejný jako mocnina délky třetí strany.
Trojúhelník je obecný, pokud jej lze sestrojit a není ani rovnostranný, ani rovnoramenný, ani
pravoúhlý.
Mohou existovat následující možnosti, kombinace:
• Nelze sestrojit
• Rovnostranný
• Rovnoramenný a nepravoúhlý, tj. jenom rovnoramenný
• Rovnoramenný a pravoúhlý
• Pravoúhlý a nerovnostranný, tj. jenom pravoúhlý
• Obecný tj. lze sestrojit a není ani rovnostranný, ani rovnoramenný, ani pravoúhlý.
Postup řešení:
Algoritmus po zadání tří vstupních hodnot bude testovat možnosti v následujícím pořadí:
1. Sestrojitelnost
2. Rovnostrannost
3. Rovnoramennost
4. Pravoúhlost
Pokud trojúhelník nebude možno sestrojit, nebude testovat nic dalšího. Pokud trojúhelník
bude možno sestrojit, bude testovat rovnostrannost. Pokud trojúhelník bude rovnostranný,
nebude testovat nic dalšího. Pokud trojúhelník nebude rovnostranný, bude testovat
rovnoramennost. Pokud trojúhelník bude rovnoramenný, bude testovat pravoúhlost.
3. Vývojový diagram:
Úvodní výpisy
Zadání vstupů a,b,c
Možno
sestrojit?
–
m
+
Nelze sestrojit Rovno
stranný?
–
m
+
Rovnostranný
Rovnora
menný?
–
m
+
Pravo
úhlý?
–
m
+ Pravo
úhlý?
–
m
+
Obecn
ý
Pravoúhlý,
nerovnostr
Rovnoramenný
, nepravoúhlý
Rovnoramenný
a pravoúhlý
Kone
c
Kone
c
Kone
c
4. program R3U;
{$APPTYPE CONSOLE}
{Rozbor trojúhelníka
Program ze tri zadanych cisel urci:
Zda je mozne sestrojit trojuhelnik se stranami zadanych delek.
Pokud ano, urci dale, zda trojuhelnik bude
rovnoramenny
rovnostranny
pravouhly
obecny
vcetne moznych kombinaci}
uses
SysUtils;
var a,b,c:real; {Strany trojuhelnika - zadava uzivatel}
begin
{ TODO -oUser -cConsole Main : Insert code here }
writeln('Program pro rozbor trojuhelnika');
writeln; {Pro prehlednost}
write('Zadej delku prvni strany: ');
readln(a);
write('Zadej delku druhe strany: ');
readln(b);
write('Zadej delku treti strany: ');
readln(c);
If (a>(b+c)) or (b>(a+c)) or (c>(a+b)) then {Test sestrojitelnosti}
writeln('Ze zadanych delek stran nelze sestrojit trojuhelnik')
else
If (a=b) and (b=c) then {Test rovnostrannosti}
writeln('Trojuhelnik sestrojeny ze zadanych delek stran je rovnostranny')
else
If (a=b) or (b=c) or (a=c) then {Test rovnoramennosti}
if ((a*a) = (b*b)+(c*c)) or ((c*c) = (b*b)+(a*a)) or ((b*b) = (a*a)+(c*c)) then
{Test pravouhlosti}
writeln('Trojuhelnik sestrojeny ze zadanych delek stran je rovnoramenny a pravouhly')
else
writeln('Trojuhelnik sestrojeny ze zadanych delek stran je rovnoramenny')
else
if ((a*a) = (b*b)+(c*c)) or ((c*c) = (b*b)+(a*a)) or ((b*b) = (a*a)+(c*c)) then
{Test pravouhlosti}
writeln('Trojuhelnik sestrojeny ze zadanych delek stran je pravouhly')
else
writeln('Trojuhelnik sestrojeny ze zadanych delek stran je obecny');
writeln; {Pro prehlednost}
writeln('Konec programu. Po precteni stisknete ENTER pro ukonceni');
readln;
end.
5. Závěr:
Algoritmus splňuje všechny body zadání. Vývojový diagram by bylo možné nakreslit lépe,
pokud by se kreslil v programu k tomu více určenému, než je WORD. Program by se dal
vylepšit například kvalitnějším grafickým rozhraním. To však v konzolové aplikaci, která
pracuje jen v textovém režimu nejde.
6. Závěr:
Algoritmus splňuje všechny body zadání. Vývojový diagram by bylo možné nakreslit lépe,
pokud by se kreslil v programu k tomu více určenému, než je WORD. Program by se dal
vylepšit například kvalitnějším grafickým rozhraním. To však v konzolové aplikaci, která
pracuje jen v textovém režimu nejde.