Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Zdravíčko, potřebuju poradit s algoritmem... jakžtakž jsem se prokousal k sestavení alg. pro zjištění zda mohou tři čísla tvořit pravoúhlý trojúhelník, teď ještě potřebuju aby se mi hodnoty načítaly z texťáku a nevím jak na to. Díky za odpověď )
program troj;
{$APPTYPE CONSOLE}
var
i,n:integer;
a,b,c:real;
f:text;
begin
{ program pro zjisteni zda mohou tri strany tvorit pravouhly trojuhelnik }
begin
assign(f,'file1.txt');
reset(f);
for i:=1 to n do begin
readln(a,b,c);
if ((a*a)+(b*b)=c*c) or ((a*a)+(c*c)=b*b) or ((c*c)+(b*b)=a*a) then
writeln('tvori pravouhly trojuhelnik')
else
writeln('netvori pravouhly trojuhelnik')
end;
end;
writeln;
writeln('Konec - ENTER!');
readln;
end.
algoritmus funguje správně ale tři čísla (strany) musím zadávat ručně, takže chyba asi někde ve vstupu textového souboru...
Offline

↑ květoslav:
Nemělo by být assignfile? Pak pomocí readln načítat po řádkách. Na konci je asi vhodné soubor uzavřít
var f:textfile;
{...}
assignfile(f, 'file.txt');
reset(f);
{...}
readln(f, a);
readln(f, b);
readln(f, c);
{...}
closefile(f);
Nemáš inicializovaný n, takhle ti to snad nemůže fungovat.
Offline

Na prvním řádku souboru file1.txt bude číslo n - počet trojúhelníků a na dalších 3n řádcích budou strany trojúhelníků.
program troj;
{$APPTYPE CONSOLE}
var
i,n:integer;
a,b,c:real;
f:textfile;
begin
{ program pro zjisteni zda mohou tri strany tvorit pravouhly trojuhelnik }
begin
assignfile(f,'file1.txt');
reset(f);
readln(f, n);
for i:=1 to n do begin
readln(f, a);
readln(f, b);
readln(f, c);
if ((a*a)+(b*b)=c*c) or ((a*a)+(c*c)=b*b) or ((c*c)+(b*b)=a*a) then
writeln('tvori pravouhly trojuhelnik')
else
writeln('netvori pravouhly trojuhelnik')
end;
end;
closefile(f);
writeln;
writeln('Konec - ENTER!');
readln;
end.Offline
↑ BrozekP:v algoritmech jsem úplně na začátku a už v koncích :) tak díky za radu, vyzkouším.
Offline
↑ BrozekP:
dělalo to trochu neplechu, ale nakonec stačil tenhle zápis
---
for i:=1 to n do begin
readln(f,a,b,c);
---
každopádně díky za okamžitou pomoc ;)
Offline

↑ květoslav:
Tady ale není problém s algoritmem, ale s prací se soubory. Podívej se do dokumentace, jak se má k textovým souborům přistupovat a číst z nich. Také je vhodné napsat, v čem programuješ :-).
Edit: není zač :-)
Offline
Stránky: 1