Показать сообщение отдельно
Старый 14.08.2015, 21:12   #1 (permalink)
Asya_inter
Member
 
Аватар для Asya_inter
 
Регистрация: 12.01.2015
Сообщений: 71
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Использовать данные из файла в программе

Здравствуйте,задача решена, но мне хотелось бы, чтобы координаты точек были записаны в файле, но я не знаю как можно из файла брать значения координат и вычислять в программе(через цикл наверное)? Подскажите, если знаете, а то примеры в интернете всё не подходящие. И ещё как исключить вероятность нахождения трёх точек на одной прямой?(просто это вроде в условии требуется, а в данном решении не выполняется) задача:На плоскости множество точек, любые три не лежат на одной прямой. Построить треугольник с наименьшей площадью.
Цитата:
program z3;
uses crt;
function Pl(x1,y1,x2,y2,x3,y3:integer):real;
begin
Pl:=abs((x1-x3)*(y2-y3)-(x2-x3)*(y1-y3))/2
end;
const nmax=19;
var t:array[1..2,1..nmax] of integer;
n,i,j,k,imn,imx,jmn,jmx,kmn,kmx,v:byte;
mn,mx:real;
begin
clrscr;
randomize;
repeat
write('Количество точек от 3 до ',nmax,' n=');
readln(n);
until n in [3..nmax];
for i:=1 to n do
begin
t[1,i]:=-10+random(21);
t[2,i]:=-10+random(21);
end;
writeln('Исходные координаты:');
write('X');
for i:=1 to n do
write(t[1,i]:4);
writeln;
write('Y');
for i:=1 to n do
write(t[2,i]:4);
writeln;
mx:=Pl(t[1,1],t[2,1],t[1,2],t[2,2],t[1,3],t[2,3]);
mn:=mx;
imn:=1;imx:=1;
jmn:=2;jmx:=2;
kmn:=3;kmx:=3;
v:=0;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
begin
if(Pl(t[1,i],t[2,i],t[1,j],t[2,j],t[1,k],t[2,k])<mn) then
begin
mn:=Pl(t[1,i],t[2,i],t[1,j],t[2,j],t[1,k],t[2,k]);
imn:=i;
jmn:=j;
kmn:=k
end;
if Pl(t[1,i],t[2,i],t[1,j],t[2,j],t[1,k],t[2,k])>mx then
begin
mx:=Pl(t[1,i],t[2,i],t[1,j],t[2,j],t[1,k],t[2,k]);
imx:=i;
jmx:=j;
kmx:=k
end;
end;
writeln('Треугольник с минимальной площадью:');
writeln(imn,'(',t[1,imn],';',t[2,imn],')');
writeln(jmn,'(',t[1,jmn],';',t[2,jmn],')');
writeln(kmn,'(',t[1,kmn],';',t[2,kmn],')');
writeln('Площадь=',mn:0:2);
writeln('Треугольник с максимальной площадью:');
writeln(imn,'(',t[1,imx],';',t[2,imx],')');
writeln(jmn,'(',t[1,jmx],';',t[2,jmx],')');
writeln(kmn,'(',t[1,kmx],';',t[2,kmx],')');
writeln('Площадь=',mx:0:2);
readln
end.
Asya_inter вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070