// PascalABC.NET 3.2, сборка 1356 от 04.12.2016 // Внимание! Если программа не работает, обновите версию!
type Point=record x,y:real; name:char end; Vector=record x,y,l:real; end;
function CreatePoint(px,py:real):Point; begin With Result do begin x:=px; y:=py; end end;
function CreateVector(A,B:Point):Vector; begin With Result do begin x:=B.x-A.x; y:=B.y-A.y; l:=Sqrt(x*x+y*y) end end;
function IsNormal(A,B:Vector):=Abs(B.x*A.x+B.y*A.y)<=1e-6;
begin var x,y:real; Write('Введите координаты x и y точки A: '); Read(x,y); var A:=CreatePoint(x,y); Write('Введите координаты x и y точки B: '); Read(x,y); var B:=CreatePoint(x,y); var AB:=CreateVector(A,B); Write('Введите координаты x и y точки C: '); Read(x,y); var C:=CreatePoint(x,y); var BC:=CreateVector(B,C); if Abs(AB.l-BC.l)>1e-6 then begin Writeln('Стороны AB и BC не равны'); Exit end; if not IsNormal(AB,BC) then begin Writeln('Стороны AB и BC не перпендикулярны'); Exit end; Write('Введите координаты x и y точки D: '); Read(x,y); var D:=CreatePoint(x,y); var CD:=CreateVector(C,D); if Abs(AB.l-CD.l)>1e-6 then begin Writeln('Стороны AB и CD не равны'); Exit end; var AD:=CreateVector(D,A); if Abs(AB.l-AD.l)>1e-6 then Writeln('Стороны AB и ADC не равны') else Writeln('Точки образуют квадрат с точностью не ниже 0.000001') end.
Пример Здесь заданы координаты квадрата, сдвинутого относительно осей координат и повернутого на угол 30 градусов против часовой стрелки. Поэтому числа такие "некруглые".
Введите координаты x и y точки A: -0.4641 -4.4641 Введите координаты x и y точки B: 3.5359 2.4641 Введите координаты x и y точки C: 10.4641 -1.5359 Введите координаты x и y точки D: 6.4641 -8.4641 Точки образуют квадрат с точностью не ниже 0.000001
program proga_25_1; Var A: text; i,j,n,m : byte; d: string; Sim:char; Begin write('Введите имя текстового файла '); {Например: "test" он создастся там где находится сама программа } read(d); Assign(A,d); rewrite(A); write('Введите количество строк: N= '); readln(n); write('Введите количество символов в строке: M= '); readln(m); for I:=1 to n do begin Sim:=Chr(Ord('1')+I-1); For J:=1 to m do write(A,Sim); writeln(A); end; close(A); end.
// Внимание! Если программа не работает, обновите версию!
type
Point=record
x,y:real;
name:char
end;
Vector=record
x,y,l:real;
end;
function CreatePoint(px,py:real):Point;
begin
With Result do begin
x:=px;
y:=py;
end
end;
function CreateVector(A,B:Point):Vector;
begin
With Result do begin
x:=B.x-A.x;
y:=B.y-A.y;
l:=Sqrt(x*x+y*y)
end
end;
function IsNormal(A,B:Vector):=Abs(B.x*A.x+B.y*A.y)<=1e-6;
begin
var x,y:real;
Write('Введите координаты x и y точки A: '); Read(x,y);
var A:=CreatePoint(x,y);
Write('Введите координаты x и y точки B: '); Read(x,y);
var B:=CreatePoint(x,y);
var AB:=CreateVector(A,B);
Write('Введите координаты x и y точки C: '); Read(x,y);
var C:=CreatePoint(x,y);
var BC:=CreateVector(B,C);
if Abs(AB.l-BC.l)>1e-6 then begin
Writeln('Стороны AB и BC не равны');
Exit
end;
if not IsNormal(AB,BC) then begin
Writeln('Стороны AB и BC не перпендикулярны');
Exit
end;
Write('Введите координаты x и y точки D: '); Read(x,y);
var D:=CreatePoint(x,y);
var CD:=CreateVector(C,D);
if Abs(AB.l-CD.l)>1e-6 then begin
Writeln('Стороны AB и CD не равны');
Exit
end;
var AD:=CreateVector(D,A);
if Abs(AB.l-AD.l)>1e-6 then Writeln('Стороны AB и ADC не равны')
else Writeln('Точки образуют квадрат с точностью не ниже 0.000001')
end.
Пример
Здесь заданы координаты квадрата, сдвинутого относительно осей координат и повернутого на угол 30 градусов против часовой стрелки. Поэтому числа такие "некруглые".
Введите координаты x и y точки A: -0.4641 -4.4641
Введите координаты x и y точки B: 3.5359 2.4641
Введите координаты x и y точки C: 10.4641 -1.5359
Введите координаты x и y точки D: 6.4641 -8.4641
Точки образуют квадрат с точностью не ниже 0.000001
Var
A: text;
i,j,n,m : byte;
d: string;
Sim:char;
Begin
write('Введите имя текстового файла '); {Например: "test" он создастся там где находится сама программа }
read(d);
Assign(A,d);
rewrite(A);
write('Введите количество строк: N= ');
readln(n);
write('Введите количество символов в строке: M= ');
readln(m);
for I:=1 to n do
begin
Sim:=Chr(Ord('1')+I-1);
For J:=1 to m do
write(A,Sim);
writeln(A);
end;
close(A);
end.