Текст программы
program project;
uses crt,graphabc,events;
type coord=record;
x1,y1:real;
end;
type coord1=record;
x2,y2:real;
end;
type mas=array[1..100] of coord; //первый множество
type mas1=array[1..100]of coord1; //второе множество
var n,i,x0,y0,i1,n1,m,s,j,g,l,k99:integer; //k99 - это k , m - это m , x0,y0 нужны для создания системы координат , n и n1 -переменные для создания массива , i ,и j,и g нужны для тройного цикла обработки точек первого множества для построения окружности
a:mas; // l нужна для проверки тех или иных точек ,проверка заключается в том ,что лежат ли они на окружности. s-счетчик
b2:mas1;
z,ch,z1,z2,z4:char; //банальные символы для нажатия
k,k1,yc,xc,r,r1,rl,p:real; //переменные для поиска радиуса и центра окружности
f:file of coord;
f1:file of coord1;
fl:boolean;
procedure vvod(var a:mas ; var n:integer;ch:char); {ввод массива с клавиатуры}
var i:integer;
Begin
writeln('Введите количество точек первого множества больше или равно 3');
readln(n);
for i:=1 to n do
begin
writeln('Введите координаты точки № ',i);
readln(a[i].x1,a[i].y1);
end;
End;
procedure vvod1(var b2:mas1 ; var n1:integer;ch:char); {ввод массива с клавиатуры}
var i:integer;
Begin
writeln('Введите количество точек второго множества');
readln(n1);
for i:=1 to n1 do
begin
writeln('Введите координаты точки № ',i);
readln(b2[i].x2,b2[i].y2);
end;
End;
procedure vivod(var a:mas; n:integer); {вывод массива }
var i:integer;
Begin
writeln('Точки 1-ого множества');
for i:=1 to n do
writeln('Координаты точки № ',i,':',a[i].x1:6:1,' ',a[i].y1:6:1);
End;
procedure vivod1(var b2:mas1; n1:integer); {вывод массива }
var i:integer;
Begin
writeln('Точки 2-ого множества');
for i:=1 to n1 do
writeln('Координаты точки № ',i,':',b2[i].x2:6:1,' ',b2[i].y2:6:1);
End;
procedure randomvvod(var a:mas;var n:integer);
var i:integer; {ввод рандом}
Begin
writeln('Введите количество точек первого множества большее или равное 3');
readln(n);
for i:=1 to n do
begin
a[i].x1:=random(14)-7+random;
a[i].y1:=random(10)-5+random;
end;
End;
procedure randomvvod1(var b2:mas1;var n1:integer);
var i:integer; {ввод рандом}
Begin
writeln('Введите количество точек второго множества ');
readln(n1);
for i:=1 to n1 do
begin
b2[i].x2:=random(14)-7+random;
b2[i].y2:=random(10)-5+random;
end;
End;
procedure fvvod;
var
f:file of coord;
i,n:integer; {ввод с клавиатуры в файл}
x,y:real;
c:coord;
fname:string;
Begin
writeln('Введите имя файла 1-ого множества');
readln(fname);
assign(f,fname);
rewrite(f);
writeln('Введите количество точек');
readln(n);
writeln('Введите точки первого множества в файл');
for i:=1 to n do
begin
readln(x,y);
c.x1:=x;
c.y1:=y;
write(f,c);
end;
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
close(f);
End;
procedure fvvod1;
var
f1:file of coord1;
i,n1:integer; {ввод с клавиатуры в файл}
x,y:real;
c:coord1;
fname:string;
Begin
writeln('Введите имя файла 2-ого множества');
readln(fname);
assign(f1,fname);
rewrite(f1);
writeln('Введите количество точек');
readln(n1);
writeln('Введите точки второго множества в файл');
for i:=1 to n1 do
begin
readln(x,y);
c.x2:=x;
c.y2:=y;
write(f1,c);
end;
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
close(f1);
End;
procedure fvivod;
var i:integer;
f:file of coord; {вывод файла}
c:coord;
fname:string;
Begin
writeln('Введите имя файла 1-ого множества');
readln(fname);
assign(f,fname);
reset(f);
for i:=1 to filesize(f) do
begin
read(f,c);
writeln(c.x1:6:1,c.y1:6:1);
end;
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
close(f);
End;
procedure fvivod1;
var i:integer;
f1:file of coord1; {вывод файла}
c:coord1;
fname:string;
Begin
writeln('Введите имя файла 2-ого множества');
readln(fname);
assign(f1,fname);
reset(f1);
for i:=1 to filesize(f1) do
begin
read(f1,c);
writeln(c.x2:6:1,c.y2:6:1);
end;
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
close(f1);
End;
Function ix(x:real):integer; {Перевод из декартовых координат в пиксели}
begin
ix:=300+round(x*40);
end;
Function jy(y:real):integer; {Перевод из декартовых координат в пиксели}
begin
jy:=260-round(y*40);
end;
Function rr(r:real):integer; {Перевод из декартовых координат в пиксели}
begin
rr:=round(sqrt((xc-a[i].x1)*(xc-a[i].x1) + (yc-a[i].y1)*(yc-a[i].y1))*40);
end;
procedure systemak(var x0,y0:integer);
Begin
x0:=20;
y0:=20;
setwindowsize(640,480);
setpenwidth(3);
line(640,260,20,260);{вертикаль}
line(300,460,300,0);{горизонталь}
line(300,0,310,20); {cистема координат}
line(300,0,290,20);
line(640,260,620,250);
line(640,260,620,270);
setpenwidth(1) ;
while x0<621 do
begin
line(x0,460,x0,20);
x0:=x0+40;
end;
while y0<461 do
begin
line(620,y0,20,y0);
y0:=y0+40;
end;
setpenwidth(3) ;
while x0>19 do
begin
line(x0,270,x0,250);
x0:=x0-40;
end;
while y0>19 do
begin
line(310,y0,290,y0);
y0:=y0-40;
end;
textout(310,15,'6');
textout(310,55,'5');
textout(310,95,'4');
textout(310,135,'3');
textout(310,175,'2');
textout(310,215,'1');
textout(310,255,'0');
textout(310,295,'-1');
textout(310,335,'-2');
textout(310,375,'-3');
textout(310,415,'-4');
textout(310,455,'-5');
textout(15,270,'-7');
textout(55,270,'-6');
textout(95,270,'-5');
textout(135,270,'-4');
textout(175,270,'-3');
textout(215,270,'-2');
textout(255,270,'-1');
textout(335,270,'1');
textout(375,270,'2');
textout(415,270,'3');
textout(455,270,'4');
textout(495,270,'5');
textout(535,270,'6');
textout(575,270,'7');
textout(615,270,'8');
textout(625,230,'x');
textout(280,0,'y');
End;
procedure mousedown( x0,y0,mp:integer ); {процедура для ввода мышкой}
Begin
if (fl=true) and (x0<=620) and (x0>=20) and (y0>=20) and (y0<=460) then begin
circle(x0,y0,2);
n:=n+1;
a[n].x1:=(x0-300)/40;
a[n].y1:=(260-y0)/40;
end;
End;
procedure mousedown1( x0,y0,mp:integer ); {процедура для ввода мышкой}
Begin
if (fl=true) and (x0<=620) and (x0>=20) and (y0>=20) and (y0<=460) then begin
circle(x0,y0,2);
n1:=n1+1;
b2[n1].x2:=(x0-300)/40;
b2[n1].y2:=(260-y0)/40;
end;
End;
procedure vvodmishka(var ch:char);
begin
hidecursor; {ввод мышью}
systemak(x0,y0);
setpenwidth(3);
onmousedown:=mousedown;
ch:=readkey;
end;
procedure vvodmishka1(var ch:char);
begin
hidecursor; {ввод мышью}
systemak(x0,y0);
setpenwidth(3);
onmousedown:=mousedown1;
ch:=readkey;
end;
procedure writefrommasinfile(a:mas;n:integer);
var f:file of coord;
i:integer;
c:coord;
fname:string; {перевод элементов из массива в файл}
begin
writeln('Введите имя файла 1-ого множества');
readln(fname);
assign(f,fname);
rewrite(f);
for i:=1 to n do
begin
c.x1:=a[i].x1;
c.y1:=a[i].y1;
write(f,c);
end;
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
close(f);
end;
procedure writefrommasinfile1(b2:mas1;n1:integer);
var f1:file of coord1;
i:integer;
c:coord1;
fname:string; {перевод элементов из массива в файл}
begin
writeln('Введите имя файла 2-ого множества');
readln(fname);
assign(f1,fname);
rewrite(f1);
for i:=1 to n1 do
begin
c.x2:=b2[i].x2;
c.y2:=b2[i].y2;
write(f1,c);
end;
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
close(f1);
end;
procedure writefromfileinmas(var a:mas; var n:integer);
var f:file of coord;
i:integer;
x,y:real;
c:coord;
fname:string;
begin {перевод элементов из файла в массив}
writeln('Введите имя файла 1-ого множества');
readln(fname);
assign(f,fname);
reset(f);
n:=filesize(f);
for i:=1 to n do
begin
read(f,c);
a[i].x1:=c.x1;
a[i].y1:=c.y1;
end;
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
close(f);
end;
procedure writefromfileinmas1(var b2:mas1; var n1:integer);
var f1:file of coord1;
i:integer;
x,y:real;
c:coord1;
fname:string;
begin {перевод элементов из файла в массив}
writeln('Введите имя файла 2-ого множества');
readln(fname);
assign(f1,fname);
reset(f1);
n1:=filesize(f1);
for i:=1 to n1 do
begin
read(f1,c);
b2[i].x2:=c.x2;
b2[i].y2:=c.y2;
end;
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
close(f1);
end;
Procedure tochkavivod; {Вывод элементов первого множества на систему координат}
begin
hidecursor;
systemak(x0,y0);
for i:=1 to n do
begin
setpencolor(clred);
circle(ix(a[i].x1),jy(a[i].y1),2);
end;
end;
Procedure tochkavivod1; {Вывод элементов второго множествана систему координат}
begin
hidecursor;
systemak(x0,y0);
for i:=1 to n1 do
begin
setpencolor(clblack);
circle(ix(b2[i].x2),jy(b2[i].y2),2);
end;
end;
Procedure tochkavivod2; {Вывод элементов второго множества на систему координат}
begin
hidecursor;
for i:=1 to n1 do
begin
setpencolor(clgreen);
circle(ix(b2[i].x2),jy(b2[i].y2),2);
end;
end;
Procedure zamena(var a:mas; n:integer); {Замена координат выбранного элемента}
var i:integer;
begin
writeln('Введите номер точки, которую заменяете в 1-ом множестве');
readln(i);
writeln('Введите новые координаты точки ',i);
read(a[i].x1,a[i].y1);
end;
Procedure zamena1(var b2:mas1; n1:integer); {Замена координат выбранного элемента}
var i:integer;
begin
writeln('Введите номер точки, которую заменяете во 2-ом множестве');
readln(i);
writeln('Введите новые координаты точки ',i);
read(b2[i].x2,b2[i].y2);
end;
Procedure vstavka(var a:mas; var n:integer); {Вставка нового элемента в массив}
begin
writeln('Введите координаты нового элемента');
n:=n+1;
read(a[n].x1,a[n].y1);
end;
Procedure vstavka1(var b2:mas1; var n1:integer); {Вставка нового элемента в массив}
begin
writeln('Введите координаты нового элемента');
n1:=n1+1;
read(b2[n1].x2,b2[n1].y2);
end;
Procedure vstavkaobr(x0,y0,mp:integer); {работа над добавлением мышью}
begin
if (x0>=20) and (x0<=620) and (y0>=20) and (y0<=460) and (fl=true) then
begin
circle(x0,y0,2);
n:=n+1;
a[n].x1:=(x0-300)/40;
a[n].y1:=(260-y0)/40;
end;
end;
Procedure vstavkaobr1(x0,y0,mp:integer); {работа над добавлением мышью}
begin
if (x0>=20) and (x0<=620) and (y0>=20) and (y0<=460) and (fl=true) then
begin
circle(x0,y0,2);
n1:=n1+1;
b2[n1].x2:=(x0-300)/40;
b2[n1].y2:=(260-y0)/40;
end;
end;
Procedure udalenie(var a:mas; var n:integer); { Удаление элемента из массива }
var i,l:integer;
begin
writeln('Введите номер элемента, который хотите удалить');
readln(l);
for i:=l to n-1 do
begin
a[i].x1:=a[i+1].x1;
a[i].y1:=a[i+1].y1;
end;
n:=n-1;
end;
Procedure udalenie1(var b2:mas1; var n1:integer); { Удаление элемента из массива }
var i,l:integer;
begin
writeln('Введите номер элемента, который хотите удалить');
readln(l);
for i:=l to n-1 do
begin
b2[i].x2:=b2[i+1].x2;
b2[i].y2:=b2[i+1].y2;
end;
n1:=n1-1;
end;
Procedure udalenieobr(x0,y0,mp:integer); {работа для удаления элементов}
var i,j:integer;
c:coord;
begin
if (x0>=20) and (x0<=620) and (y0>=20) and (y0<=460) and fl=true then
begin
setpenwidth(3);
setpencolor(clwhite);
circle(x0,y0,3);
c.x1:=(x0-300)/40;
c.y1:=(220-y0)/40;
for i:=1 to n do
if (abs(a[i].x1-c.x1)<=0.1) and (abs(a[i].y1-c.x1)<=0.1) then
begin
for j:=i to n-1 do
begin
a[j].x1:=a[j+1].x1;
a[j].y1:=a[j+1].y1;
end;
n:=n-1;
end;
end;
setpencolor(clblack);
end;
Procedure udalenieobr1(x0,y0,mp:integer); {работа для удаления элементов}
var i,j:integer;
c:coord1;
begin
if (x0>=20) and (x0<=620) and (y0>=20) and (y0<=460) and fl=true then
begin
setpenwidth(3);
setpencolor(clwhite);
circle(x0,y0,3);
c.x2:=(x0-300)/40;
c.y2:=(220-y0)/40;
for i:=1 to n1 do
if (abs(b2[i].x2-c.x2)<=0.1) and (abs(b2[i].y2-c.x2)<=0.1) then
begin
for j:=i to n1-1 do
begin
b2[j].x2:=b2[j+1].x2;
b2[j].y2:=b2[j+1].y2;
end;
n1:=n1-1;
end;
end;
setpencolor(clblack);
end;
Procedure tochkavstavka; { Вставка элементов мышью }
begin
fl:=true;
hidecursor;
systemak(x0,y0);
tochkavivod;
repeat
onmousedown:=vstavkaobr;
until keypressed;
setpencolor(clblack);
end;
Procedure tochkavstavka1; { Вставка элементов мышью }
begin
fl:=true;
hidecursor;
systemak(x0,y0);
tochkavivod1;
repeat
onmousedown:=vstavkaobr1;
until keypressed;
setpencolor(clblack);
end;
Procedure udalenietochka; {Удаление элементов мышью}
begin
hidecursor;
systemak(x0,y0);
tochkavivod;
fl:=true;
repeat
onmousedown:=udalenieobr;
until keypressed;
setpencolor(clblack);
end;
Procedure udalenietochka1; {Удаление элементов мышью}
begin
hidecursor;
systemak(x0,y0);
tochkavivod1;
fl:=true;
repeat
onmousedown:=udalenieobr1;
until keypressed;
setpencolor(clblack);
end;
procedure myexample;
var //мой пример того ,что может получится
fname:string;
example:integer;
begin
fname:='myexample.png';
example:=loadPicture(fname);
drawPicture(example,0, 0, 640, 400);
end;
procedure start1; {первое меню}
Begin
writeln('1: Ввод - вывод.');
writeln('2: Редактирование.');
writeln('3: Расчет задачи.');
writeln('4: Демонтсрация.');
End ;
procedure start2; {меню ввода и вывода}
Begin
clrscr;
writeln('1. Ввод с клавиатуры в массив. ') ;
writeln('2. Ввод через Random. ') ;
writeln('3. Ввод с клавиатуры в файл. ') ;
writeln('4. Ввод мышью 1-ого множества. ') ;
writeln('5. Ввод мышью 2-ого множества. ') ;
writeln('6. Вывод из массива на экран. ') ;
writeln('7. Вывод из файла на экран. ') ;
writeln('8. Запись из массива в файл. ') ;
writeln('9. Запись из файла в массив. ') ;
writeln('0. Вернуться в главное меню. ') ;
End;
procedure start3; {меню редактирования}
Begin
clrscr;
writeln('1. Замена 1-ого множества. ') ;
writeln('2. Вставка элемента через клавиатуру 1-ого множества. ') ;
writeln('3. Вставка элемента мышью 1-ого множества. ') ;
writeln('4. Удаление элемента через клавиатуру 1-ого множества. ') ;
writeln('5. Удаление элемента мышью 1-ого множества. ') ;
writeln('6. Замена 2-ого множества. ') ;
writeln('7. Вставка элемента через клавиатуру 2-ого множества. ') ;
writeln('8. Вставка элемента мышью 2-ого множества. ') ;
writeln('9. Удаление элемента через клавиатуру 2-ого множества. ') ;
writeln('-. Удаление элемента мышью 2-ого множества. ') ;
writeln('+. Замена переменной k. ') ;
writeln('=. Замена переменной m. ') ;
writeln('0. Вернуться в главное меню. ') ;
End;
BEGIN
s:=0;
n:=0;
fl:=true;
clrscr;
hidecursor;
setfontsize(13) ;
gotoxy(20,4);
writeln('Решение задачи №29 по геометрии');
gotoxy(20,7);
writeln('Ученика 10-2 класса ФМЛ №239');
gotoxy(20,9);
writeln('Томчина Анатолия');
setfontsize(10);
gotoxy(20,11);
writeln('Учитель информатики : Батракова Людмила Васильевна');
gotoxy(20,13);
writeln('Учитель математики : Черняев Игорь Владимирович');
gotoxy(15,14);
writeln('Даны два множества точек на плоскости.');
gotoxy(15,15);
writeln('Найти центр и радиус окружности, проходящей ') ;
gotoxy(15,16);
writeln('через k (k>=3) точек первого множества');
gotoxy(15,17);
writeln('и содержащей строго внутри себя m точек второго множества. ');
gotoxy(20,20);
writeln('Нажмите любую клавишу для продолжения');
while keypressed do z4:=readkey;
readkey;
clearwindow;
myexample;
gotoxy(1,1);
writeln('Нажмите любую клавишу для продолжения');
gotoxy(1,2);
writeln('Это пример решения задачи');
while keypressed do z4:=readkey;
readkey;
clearwindow;
repeat
gotoxy(1,1);
start1;
writeln ( 'Введите соответствующий номер пункта ');
readln(z1);
case z1 of
'1': Begin
repeat
start2;
readln(z);
case z of
'1':begin writeln('Координатная плоскость размером [-7;8] по х и [-5;6] по y');vvod(a,n,ch);writeln('Введите кол-во k точек');readln(k99); vvod1(b2,n1,ch);writeln('Введите кол-во m точек');readln(m);end;
'2':begin randomvvod(a,n);writeln('Введите кол-во k точек');readln(k99);randomvvod1(b2,n1);writeln('Введите кол-во m точек');readln(m);end;
'3':begin writeln('Координатная плоскость размером [-7;8] по х и [-5;6] по y');fvvod; fvvod1;end;
'4':begin
clearwindow ;
fl:=true;
gotoxy(1,1);
writeln('Введите кол-во k точек');
readln(k99);
clearwindow;
gotoxy(35,10);
writeln('Ждите!!!');
delay(3000);
clearwindow;
gotoxy(1,1);
writeln('нажмите e(англ.) для выхода');
repeat vvodmishka(ch);
until ch=#101;
clearwindow;
setpencolor(clblack);
start2;
fl:=false;
end;
'5':begin
clearwindow ;
fl:=true;
gotoxy(1,1) ;
writeln('Введите кол-во m точек');
readln(m);
clearwindow;
gotoxy(35,10);
writeln('Ждите!!!');
delay(3000);
clearwindow;
gotoxy(1,1);
writeln('нажмите e(англ.) для выхода');
repeat vvodmishka1(ch);
until ch=#101;
clearwindow;
setpencolor(clblack);
start2;
fl:=false;
end;
'6':begin vivod(a,n);writeln;vivod1(b2,n1);
writeln('k=',' ',k99);
writeln('m=',' ',m);
writeln('Нажмите любую клавишу');
while keypressed do ch:=readkey;
readkey;
end;
'7':begin fvivod; fvivod1 ; end;
'8':begin writefrommasinfile(a,n); writefrommasinfile1(b2,n1);end;
'9':begin writefromfileinmas(a,n);writeln('Введите кол-во k точек');readln(k99); writefromfileinmas1(b2,n1);writeln('Введите кол-во m точек');readln(m);end;
'0':clearwindow;
end;
until (z='0')
End;
'2': Begin
repeat
start3;
readln(z2);
case z2 of
'1':begin
clearwindow;
gotoxy(1,1);
vivod(a,n);
zamena(a,n);
writeln('Новый массив');
vivod(a,n);
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
end;
'2':begin
clearwindow;
gotoxy(1,1);
vivod(a,n);
vstavka(a,n);
writeln('Новый массив');
vivod(a,n);
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
end;
'3':begin
clearwindow;
gotoxy(1,1);
tochkavstavka;
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
clearwindow;
setpencolor(clblack);
end;
'4':begin
clearwindow;
gotoxy(1,1);
vivod(a,n);
udalenie(a,n);
writeln('Новый массив');
vivod(a,n);
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
end;
'5':begin
clearwindow;
gotoxy(1,1);
udalenietochka;
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
if keypressed then fl:=false;
clearwindow;
setpencolor(clblack);
end;
'6':begin
clearwindow;
gotoxy(1,1);
vivod1(b2,n1);
zamena1(b2,n1);
writeln('Новый массив');
vivod1(b2,n1);
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
end;
'7':begin
clearwindow;
gotoxy(1,1);
vivod1(b2,n1);
vstavka1(b2,n1);
writeln('Новый массив');
vivod1(b2,n1);
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
end;
'8':begin
clearwindow;
gotoxy(1,1);
tochkavstavka1;
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
clearwindow;
setpencolor(clblack);
end;
'9':begin
clearwindow;
gotoxy(1,1);
vivod1(b2,n1);
udalenie1(b2,n1);
writeln('Новый массив');
vivod1(b2,n1);
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
end;
'-':begin
clearwindow;
gotoxy(1,1);
udalenietochka1;
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
if keypressed then fl:=false;
clearwindow;
setpencolor(clblack);
end;
'+':begin
clearwindow;
gotoxy(1,1);
writeln('Введите новое k');
readln(k99);
end;
'=':begin
clearwindow;
gotoxy(1,1);
writeln('Введите новое m');
readln(m);
end;
'0':clearwindow;
end;
until z2='0'
End;
'3': Begin
clearwindow;
gotoxy(1,1);
p:=3;
vivod(a,n);
vivod1(b2,n1);
writeln('k =',' ',k99);
writeln('m =',' ',m);
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for g:=j+1 to n do
begin
k:= (a[j].y1 - a[i].y1)/(a[j].x1 - a[i].x1); //высчитывание радиуса окружности и центра окружности
k1:=(a[g].y1 - a[j].y1)/(a[g].x1 - a[j].x1);
xc:=(k*k1*(a[i].y1 - a[g].y1) + k1 * (a[j].x1 + a[i].x1) - k*(a[j].x1 + a[g].x1))/(2*(k1-k));
yc:=(-1/k)*(xc -((a[j].x1 + a[i].x1)/2))+((a[j].y1 + a[i].y1) /2);
r:=sqrt((a[i].x1 - xc) * (a[i].x1 - xc) + (a[i].y1 - yc ) * (a[i].y1 - yc ) );
end;
if ((a[j].x1 - a[i].x1)=0) or ((a[g].x1 - a[j].x1)=0) or ((2*(k1-k)=0)) or (k=0) then writeln('Введи новые данные!');
for l:=1 to n do
if (l<>i) and (l<>j) and (l<>g) then begin //проверка на то,лежат ли другие точки первого множества на окружности
rl:=sqrt((a[l].x1 -xc)*(a[l].x1 -xc)+(a[l].y1-yc)*(a[l].y1-yc));
if rl=r then p:=p+1;
end;
if p=k99 then begin //если кол-во точек на окружности совпадает с k,то выводим координаты центра и радиус окружности
writeln('Такая окружность существует , на которой лежат k точек ');
writeln('х-вая координата центра окружности ',xc:4:2);
writeln('y-вая координата центра окружности ',yc:4:2);
writeln('радиус окружности ',r:4:2);
writeln;
for i1:=1 TO n1 do begin
r1:=sqrt((b2[i1].x2 - xc)*(b2[i1].x2 - xc) + (b2[i1].y2 - yc) *(b2[i1].y2 - yc));
if r1<r then begin s:=s+1 ;writeln('Точка',i1,' второго множества лежит в окружности' ); end //проверка на то ,лежат ли точки 2-ого множества строго в окружности
else writeln('Точка',i1,' второго множества не лежит в окружности' );
end;
if m=s then writeln('Задача решена ')
else writeln('Задача не решена ');
end
else writeln('Не существует такой окружности , на которой лежат k точек');
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
clearwindow;
end;
'4': Begin
clearwindow;
tochkavivod;
gotoxy(1,1);
setpencolor(clblue);
circle(ix(xc),jy(yc),2);
setBrushStyle(bsclear);
setpencolor(clblack);
circle(ix(xc),jy(yc),rr(r));
tochkavivod2;
write('Нажмите любую клавишу для перехода в меню');
while keypressed do z2:=readkey;
readkey;
clearwindow;
setpencolor(clblack);
End;
END;
until z4=#27
END.
