Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 23.10.2013
Сообщений: 50

Найти касательные к окружностям

04.11.2014, 20:29. Показов 644. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, с выводом всех окружностей по типу (координата центра и радиус) и найти касательные к этим окружностям если есть,и почему то больше 59 точек не берет
Pascal
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
uses crt;
const nmax=59;//больше точек при переборе не потянет
      e=0.01;//точность вычислений
type
Point=record//тип точка с координатами
      x,y:real;
      end;
Okruz=record//тип окружность, координаты центра и радиус
      o:Point;
      r:real;
    end;
MassP=array[1..nmax] of Point;//массив точек
MassO=array[1..117*nmax] of Okruz;//массив окружностей
procedure Tochki(var t:MassP;var n:integer);//создание множества точек
var i:integer;
begin
repeat
write('Kolichestvo tochek ot 3 do ',nmax,' n=');
readln(n);
until n in [3..nmax];
for i:=1 to n do
 begin
  t[i].x:=20*random-0;
  t[i].y:=20*random-0;
 end;
end;
 
procedure Okr(t1,t2,t3:Point;var o:Point;var r:real);//вычисление параметров окружности, проходящей через 3 точки
var a,b,x,y:real;
    k0,k1,k2,m0,m1,m2:real;
begin
k0:=sqr(t1.x)-sqr(t2.x)+sqr(t1.y)-sqr(t2.y);
k1:=2*(t1.y-t2.y);
k2:=2*(t1.x-t2.x);
m0:=sqr(t1.x)-sqr(t3.x)+sqr(t1.y)-sqr(t3.y);
m1:=2*(t1.y-t3.y);
m2:=2*(t1.x-t3.x);
a:=k2*m0-k0*m2;
b:=k2*m1-k1*m2;
if b=0 then exit;
y:=a/b;
o.y:=y;
if abs(m2) > e then x:=(m0-y*m1)/m2
else
  if abs(k2) > e then x:=(k0-y*k1)/k2
  else exit;
o.x:=x;
r:=sqrt(sqr(t1.x-x)+sqr(t1.y-y));
end;
procedure MassOkr(t:MassP;n:integer;var ok:MassO;var k:integer);//создание массива окружностей, 
//проходящих через любые 3 точки множества
var i,j,l:integer;
begin
k:=0;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for l:=j+1 to n do
 begin
  k:=k+1;
  Okr(t[i],t[j],t[l],ok[k].o,ok[k].r);
 end;
end;
function Prin(a,b:Point;c:real):boolean;//определение принадлежности точки кругу
begin
if (sqr(a.x-b.x)+sqr(a.y-b.y))-c*c<-e then Prin:=true
else Prin:=false
end;
//нахождение параметров окружности, включающей максимальное число точек
procedure Max(t:MassP;n:integer;ok:MassO;k:integer;var ro:Okruz;var kv,kn:integer);
var i,j,mx,k1:integer;
begin
mx:=0;ro.o.x:=0;ro.o.y:=0;ro.r:=0;
for i:=1 to k do//перебираем все окружности
 begin
  k1:=0;//количество точек внутри
  for j:=1 to n do//перебираем все точки
  if Prin(ok[i].o,t[j],ok[i].r) then k1:=k1+1;//если внутри окружности, считаем
  if k1>mx then
   begin
    mx:=k1;//находим максимальное
    ro.o:=ok[i].o;//координаты центра
    ro.r:=ok[i].r;//радиус
   end;
 end;
kv:=mx;//количество внутри
kn:=n-kv-3;//количество снаружи(3 точки на окружности)
end;
 
var t:MassP;
    ok:MassO;
    ro:Okruz;
    n,k,i,vn,sn:integer;
    gd,gm,x0,y0:integer;
    s1,s2:string;
begin
clrscr;
randomize;
Tochki(t,n);
{можно для наглядности вывести координаты точек}
for i:=1 to n do
write(t[i].x:5:2);
writeln;
for i:=1 to n do
write(t[i].y:5:2);
writeln;
MassOkr(t,n,ok,k);
Max(t,n,ok,k,ro,vn,sn);
for i:= 1 to n do 
if abs(t[i].x)=ro.r then writeln('Касательная в точке',t[i].x)
else writeln('Касательных нет'); 
writeln('Окружность: координаты центра x0=',ro.o.x:0:2,' Y0=',ro.o.y:0:2,' R=',ro.r:0:2);
writeln('Внутри точек=',vn,'  снаружи=',sn);
readln;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2014, 20:29
Ответы с готовыми решениями:

Найти уравнение касательных к двум окружностям
Добрый день! подскажите плиз как получить уравнения касательных, проведенных к 2 окружностям в общем виде. Дано: 2 окружности (X0, Y0,...

Найти общие касательные к двум эллипсам
Найти общие касательные к следующим двум эллипсам: x*x/5 + y*y/4 = 1 и x*x/4 + y*y/5 = 1

Найти координаты точек внешних касательных к двум окружностям
Всех приветствую! Прошу помочь в решении задачи: Используется двумерная декартова система координат. Известны координаты xy точек О1 и...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2014, 20:29
Помогаю со студенческими работами здесь

Найти точки, в которых касательные к кривой параллельные оси абсцисс
Найти точки, в которых касательные к кривой параллельные оси абсцисс y=3x4+4x3-12x2+20

Найти точки, в которых касательные кривой параллельны оси абсцисс.
Помогите плиз, подробно распишите задания: 3.Решить задачу решение отобразить на графике:

Найти геометрическое место точек, из которых можно провести взаимно перпендикулярные касательные к эллипсу
Найти геометрическое место точек, из которых можно провести взаимно перпендикулярные касательные к эллипсу: (x^2 / a^2) + (y^2 / b^2) = 1....

Найти касательные плоскости к поверхности, которые параллельны данной плоскости
2) Найти те касательные плоскости к поверхности 4x^2+6y^2+4z^2+4xz-8y-4z+3=0, которые параллельны плоскости x+2y+z=0.

Касательная к двум окружностям
Даны координаты центров двух окружностей и их радиусы. Необходимо найти координаты точек касания общей касательной к этим окружностям....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru