Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2009, 23:14   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
да..вот ещё.. хотел бы спросить что выполняет данная прогрмма
Судя по этой фразе:
Код:
label4.Caption:='Разность кол-ва окр-тей лежащих внутри треугольника и снаружи: ' +IntToStr(Na);
это может быть решением вашей задачи.
А вообще разбираться нет никакого желания.

И вам бы посоветовал не искать готовых решений, а сделать ее самостоятельно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.03.2009, 23:23   #12
surovii
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 31
По умолчанию

жаль, что удалили..просто там немного схоже с моим заданием было..только я не понимал какое именно там задание было.

Sazary спасибо за совет..но ведь сроки сдачи курсовой не растягиваются как резина) поэтому приходится заниматься маленьким плагиатством

и так: что мы имеем?
1)уравнение прямой по двум точкамx-x0)/(x1-x0)=(y-y0)/(y1-y0)
или y-y0=k*(x-x0)
2)уравнение прямой перпендикулярной другой:y-y1=-1/k*(x-x1)

ну и 3) длина отрезка: d:=sqrt(sqr(y2-y1)+sqr(x2-x1))

Последний раз редактировалось Stilet; 12.03.2009 в 08:32.
surovii вне форума Ответить с цитированием
Старый 11.03.2009, 23:45   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
но ведь сроки сдачи курсовой не растягиваются как резина
Если не затягивать, то их вполне хватает

Значит так. Выкладываю то, что сделал. Программу полностью писать, естественно, не буду. Все-таки это Ваш курсовик.

Думаю, разберетесь.
Функция dlina_perpend возвращает длину перпендикуляра к стороне треугольника, опущенного из центра окружности.

Код:
uses crt;
type
circl = record
x : real;
y : real;
R : real;
end;

coord = record
x : real;
y : real;
end;

treug = record
A,B,C : coord;
soderzh : integer;
vnutri : integer;
end;

const M=12; N=10;

var
krugi : array[1..M] of circl;
T : array[1..N] of coord;
i,j,l,k : integer;
treugs : array[1..50] of treug;
treugCount : integer;

{-----------------}
 { функция возвращает длину перпендикуляра из центра окружности к стороне
  треугольника (сторона AB) }
function dlina_perpend(A,B : coord; R : coord) : real;
 var
 k,bc : real;
 X,Y : real;
 dlin : real;
 begin
 k := (B.y-A.y)/(B.x-A.x);
 bc := A.y - A.x * (B.y-A.y)/(B.x-A.x);

 X := (-R.y -R.x/k + bc)/(-k-1/k);
 Y := -(R.y*k + R.x + bc/k)/(-k-1/k);

 dlin := sqrt(sqr(X-R.x)+sqr(Y-R.y));
 dlina_perpend := dlin;
 end;
{-----------------}

function dlina(A,B : coord) : real;
 begin
 dlina := sqrt(sqr(B.x-A.x)+sqr(B.y-A.y));
 end;

begin
clrscr;
randomize;

for i:=1 to M do
 begin
 krugi[i].x := random(100)+1;
 krugi[i].y := random(100)+1;
 krugi[i].R := random(30)+10;
 end;

for i:=1 to N do
 begin
 T[i].x := random(100)+1;
 T[i].y := random(100)+1;
 end;

{-------------}
treugCount := 0;

for i:=1 to N do
 for j:=i+1 to N do
  for l:=j+1 to N do
   begin
   inc(treugCount);
   with treugs[treugCount] do
     begin
     A := T[i];
     B := T[j];
     C := T[l];
     soderzh := 0;
     vnutri := 0;
     end;

    { идем по кругам }
   for k:=1 to M do
     begin
     { здесь проверяете, лежит ли треугольник внутри круга, или наоборот,
       круг внутри треугольника }
    { если круг внутри, то увеличиваете vnutri, если треугольник внутри, то soderz }


     end;

   end;

 { и потом смотрите разности этих значений каждого треугольника }
readln;
end.
Прикладываю картинку, как я выводил уравнения на бумажке.
Там в конце X и Y - точка пересечения перпендикуляра со стороной.

Цитата:
и так: что мы имеем?
все верно. Дальше нужно выводить конечные формулы.
Изображения
Тип файла: jpg scr-d.jpg (89.9 Кб, 154 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 11.03.2009 в 23:54.
Sazary вне форума Ответить с цитированием
Старый 11.03.2009, 23:52   #14
surovii
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 31
По умолчанию

Спасибо большое..
ща буду разбираться..

а можно вопрос..
какая была изначально система уравнений, которую вы решали..
просто мне бы хотелось поподорбнее разобраться и вывести формулу своей рукой..
использовать бездумно ваш труд я не намерен..

Последний раз редактировалось Stilet; 12.03.2009 в 08:32.
surovii вне форума Ответить с цитированием
Старый 12.03.2009, 00:17   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
использовать бездумно ваш труд я не намерен..
Если так, то очень рад )

Формула исходной прямой (стороны треугольника)
y = x * (y2 - y1)/(x2 - x1) + y1 - x1*(y2-y1)/(x2-x1)
Отсюда получаем:
k = (y2 - y1)/(x2 - x1)
b = y1 - x1*(y2-y1)/(x2-x1)


Это для уравнения вида y = kx + b
-------------------
Уравнение прямой, перпендикуляра:
y = (-1/k)*x + y3 + x3/k
где x3 и y3 - координаты центра окружности (из которого мы и опускаем перпендикуляр).
-------------------
Далее нужно найти точку пересечения. Для этого нужно использовать уравнение прямой в виде:
Ax + By + C = 0

Для исходной прямой:
A1 = k, B1 = -1, C1 = b
Для перпендикуляра:
A2 = -1/k, B2 = -1, C2 = y3 + x3/k

Координаты точки пересечения:
X = (-y3 - x3/k + b)/(-k - 1/k)
Y = -(y3*k + x3 + b/k)/(-k - 1/k)


upd
Да, забыл:
Координаты точки пересечения двух прямых в исходном виде:
X = (B1*C2 - B2*C1) / (A1*B2 - A2*B1)
Y = - (A1*C2 - A2*C1) / (A1*B2 - A2*B1)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 12.03.2009 в 00:23.
Sazary вне форума Ответить с цитированием
Старый 12.03.2009, 20:17   #16
surovii
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 31
По умолчанию

спасибо большое

да вот ещё вопрос.. мы тему с графикой начали проходить совсем недавно и сразу дали делаь это задание..
но лекционного материала не хватает поэтому просьба к вам дать ссылочку на какое-нибудь объяснение данной темы..

Последний раз редактировалось Stilet; 13.03.2009 в 08:57.
surovii вне форума Ответить с цитированием
Старый 12.03.2009, 23:22   #17
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Посмотрите в теме Полезная литература. Паскаль
Выберите какую-нибудь книжку, в названии которой присутствует "Учебник", "Справочник" и подобное.
Там особо учиться нечему. Нужно просто знать нужные процедуры. Поэтому сгодится любой справочник.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 15.03.2009, 22:39   #18
surovii
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 31
По умолчанию

спасибо.....
surovii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по Графике. BlackvsEvgen Помощь студентам 13 21.01.2009 16:22
Помогите пожалуйста сделать разметку на графике Taisja Помощь студентам 1 19.06.2008 17:45
помощь в графике KingArthur Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 19.04.2008 23:58
Задачки по графике LaDy MaRMeLaD Паскаль, Turbo Pascal, PascalABC.NET 4 12.01.2008 16:14
пожалуйста помогите мне по графике felistrs Общие вопросы Delphi 1 19.11.2006 16:32