Преобразование множества прямых линий

  • Автор темы Zikfrid
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

Zikfrid

Гость
#1
Необходима помощь в паскале смог решить 2 из 3ех условий задачи вот она сама

Преобразование множества прямых линий
Множество прямых М задано коэффициентами их уравнений вида Ах + Вy + C = 0. Выполнить над М последовательность действий, указанную в задании.

а) Выбрать из M все пары параллельных прямых;
б) вычислить расстояния между параллельными прямыми;
в) сформировать множество P принадлежит M, включающее в себя только прямые, расстояния между которыми меньше заданной величины.

вот код первых двух условий

Код:
Program Zd_3;
Uses WinCrt;
const n=10;
type mas=array[1..n,1..n] of integer;
mass=array[1..n,1..n] of real;
mmm=array[1..n] of integer;
nnn=array[1..n] of real;
var A1,B,C,C1,P1:mas;
Y1,D1:mass;
B1,B2:nnn;
aa,bb,cc,tt:integer;

Function PLine (var L1,L2:mmm):boolean;
begin
if L1[1]/L2[1]=L1[2]/L2[2] then
Pline:=true
else Pline:=false;
end;

Function R (var A,B,C,Y:nnn ): real;
var r1,r2,r3:real;
begin
Y[1]:=-C[1]-A[1]/B[1];
r1:=A[2]+B[2]*Y[2]+C[2];
r2:=A[2]*A[2]+B[2]*B[2];
r3:=abs(r1)/sqrt(r2);
R:=r3;
end;

Procedure Vvod(var m:integer; var V:mas);
var i,j:integer;
begin
writeln ('Vvedite colichestvo praymyx:');
readln (m);
writeln ('Vvedite koefficienty praymyx:');
for i:=1 to m do
for j:=1 to 3 do
begin
readln(V[i,j]);
end;
end;

Procedure Vivod(m:integer; V:mas);
var i,j:integer;
begin
for i:=1 to m do
begin
write(V[i,1],'x + ',V[i,2],'y + ',V[i,3]);
writeln;
end;
end;

Procedure Parall(m:integer; V:mas);
var i1,i2,f:integer; L1,L2:mmm; O,A,B,C:real; Y:nnn;
begin
f:=0;
for i1:=1 to (m-1) do
begin
L1[1]:=V[i1,1]; L1[2]:=V[i1,2];
for i2:=i1+1 to m do
begin
L2[1]:=V[i2,1]; L2[2]:=V[i2,2];
if PLine(L1,L2) then
begin
writeln('Iskomaya para uravneniya:');
writeln('----------------------------');
writeln (V[i1,1],' + ',V[i1,2],' + ',V[i1,3]);
writeln (V[i2,1],' + ',V[i2,2],' + ',V[i2,3]);
writeln('----------------------------');
f:=f+1;
end;
end;
end;
if (f=0) then writeln ('Iskomyx par net');
end;

Procedure Rass(m:integer; V:mas);
var i1,i2:integer; O:real; Y,A,B,C:nnn; L1,L2:mmm;

begin
for i1:=1 to (m-1) do
begin
A[1]:=V[i1,1]; B[1]:=V[i1,2]; C[1]:=V[i1,3];
for i2:=i1+1 to m do
begin
A[2]:=V[i2,1]; B[2]:=V[i2,2]; C[2]:=V[i2,3];
begin
O:=R(A,B,C,Y);
writeln('*************');
writeln(o:5:2);
writeln('*************');
end;
end;
end;
end;
begin
Vvod(aa,A1);
Vivod(aa,A1);
Parall(aa,A1);
Rass(aa,A1);
end.
не смог составить код 3его условия надеюсь на вашу помошь
 
Статус
Закрыто для дальнейших ответов.