Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет Томчин А.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
111 Кб
Скачать
☆
  1. Текст программы

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.