1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
| Program Par_Pryam;
const n=100;
type mas=array[1..n,1..3] of integer;
mmm=array[1..3] of integer;
var V,V2:mas;
ii,m:integer;
s:real;
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 Rasst (var C1, C2: integer): real; //Определение расстояния между прямыми
begin
Rasst := abs(C2-C1);
end;
Procedure Vvod(var m:integer; var V:mas; var s:real); //Заполнение массива коэффициентов прямых
var i,j:integer;
begin
writeln ('Введите количество прямых:');
readln (m);
writeln ('Введите коэффициенты прямых:');
for i:=1 to m do
for j:=1 to 3 do
begin
readln(V[i,j]);
end;
writeln ('Введите расстояние между прямыми:');
readln (s);
end;
Procedure Vivod(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 Massiv2(i1,i2: integer; V:mas; var V2:mas); //Заполнение второго массива
var i,j:integer; //парами прямых с расстоянием меньше заданного в условиях
begin
i:= ii;
for j:= 1 to 3 do
begin
V2[i,j]:= V[i1,j];
V2[i+1,j]:= V[i2,j];
end;
ii:= ii+2;
end;
Procedure Vivod2(V2:mas; ii:integer); //Вывод второго массива на экран
var i:integer;
begin
if ii = 1 then
begin
writeln('Нет параллельных прямых с заданным расстоянием');
exit;
end;
writeln ('Пары параллельных прямых с заданным расстоянием: ');
for i:=1 to (ii-1) do
begin
write(V2[i,1],'x + ',V2[i,2],'y + ',V2[i,3]);
writeln;
end;
end;
Procedure Parall(m:integer; V:mas);
var i1,i2,f:integer;
L1,L2:mmm;
r:real;
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
r := Rasst(V[i1,3],V[i2,3]);
writeln('Данные прямые параллельны:');
writeln('----------------------------');
writeln (V[i1,1],'x + ',V[i1,2],'y + ',V[i1,3]);
writeln (V[i2,1],'x + ',V[i2,2],'y + ',V[i2,3]);
writeln('Расстояние между прямыми: ',r);
writeln('----------------------------');
if r < s then
begin
Massiv2(i1,i2,V,V2);
end;
f:=f+1;
end;
end;
end;
if (f=0) then
begin
writeln ('Параллельных прямых нет');
exit;
end;
end;
begin
ii:= 1;
Vvod(m,V,s);
Vivod(V);
Parall(m,V);
Vivod2(V2,ii);
end. |