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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2009, 20:56   #1
surovii
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 31
По умолчанию функции

помогите написать вот эти три функции..

1) функция находящая треугольники в четвёртой четверти декартовой системы координат
2) функция считающая минимальную площадь тругольника
3) Функция находящую кол-во треугольников находящихся полностью в окружности

при таких параметрах:
type coord=record
x:integer;
y:integer;
end;

type treug=record
A:coord;
B:coord;
C:coord;
end;
surovii вне форума Ответить с цитированием
Старый 27.03.2009, 00:01   #2
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Даны три координаты вершин? Тогда:
1. Проверять чтобы координата х каждой вершины была положительной, а у отрицательной.

Код:
function inFourth(coords:treug):boolean;
begin
with coords do begin
	if	(A.x>0) and (B.x>0) and (C.x>0) and
		(A.y<0) and (B.y<0) and (C.y<0) then
			inFourth := true
	else inFourth := false;
end;
end;
2. Непонятно... минимальной из каких?
3. Уже было задание такое... проверить нах-ся ли точка внутри окр-ти.. только тут одновременно все три должны находиться.
Логика понятна же (кроме второго)... В чем проблема?
Uguu~

Последний раз редактировалось __STDC__; 27.03.2009 в 00:16.
__STDC__ вне форума Ответить с цитированием
Старый 27.03.2009, 00:17   #3
Niarb
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 38
По умолчанию

к пункту 2:
...
площадь тругольника по координатам его вершин можно вычислить так:

S:=Sqrt(p*abs(p-a)*abs(p-b)abs(p-c)),
где:
a, b, с - длины сторон
p - полупериметр - (a+b+c)/2

...длина стороны...
a:=sqrt(sqr(x2-x1)+sqr(y2-y1))
Чем меньше вы знаете, тем больше я ценен как специалист...
Niarb вне форума Ответить с цитированием
Старый 27.03.2009, 00:21   #4
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Формула Герона, угу.. только непонятно, почему минимальная? Минимальная площадь будет в частном случае, когда все три координаты треугольника совпадают и он вырождается в точку))))
P.S. третью уж очень лень писать.. на форуме уже писал про это и видел 2 или даже больше тем по этому поводу..
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 27.03.2009, 19:02   #5
surovii
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 31
По умолчанию

за всё это конечно спасибо но третью я больше всего не понимаю, поэтому прошу скинуть мне ссылочку на это либо написать ф-цию..
surovii вне форума Ответить с цитированием
Старый 27.03.2009, 19:05   #6
surovii
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 31
По умолчанию

мдя вот ещё я прикинул ф-цию про минимальную площадь
Код:
function minS(t:array of treug;n:integer):real;
var ab,bc,ac,minS:real;
A,B,C:coord;
p:array [1..100] of real;
S:array [1..100] of real;
begin
minS:=0;
for i:=1 to n do
ab:=sqrt(sqr(t[i].A.x-t[i].B.x)+sqr(t[i].A.y-t[i].B.y));
bc:=sqrt(sqr(t[i].B.x-t[i].C.x)+sqr(t[i].B.y-t[i].C.y));
ac:=sqrt(sqr(t[i].A.x-t[i].C.x)+sqr(t[i].A.y-t[i].C.y));
p[i]:=(ab+bc+ac)/2;
S[i]:=sqrt(p[i]*(p[i]-ab)*(p[i]-bc)*(p[i]-ac));
minS:=S[1];
if S[i]<minS then minS:=S[i];
end;
surovii вне форума Ответить с цитированием
Старый 27.03.2009, 19:06   #7
surovii
Пользователь
 
Регистрация: 10.03.2009
Сообщений: 31
По умолчанию

кто что скажет?
surovii вне форума Ответить с цитированием
Старый 27.03.2009, 19:54   #8
Niarb
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 38
По умолчанию

Цитата:
begin
minS:=0;
for i:=1 to n do
ab:=sqrt(sqr(t[i].A.x-t[i].B.x)+sqr(t[i].A.y-t[i].B.y));
bc:=sqrt(sqr(t[i].B.x-t[i].C.x)+sqr(t[i].B.y-t[i].C.y));
ac:=sqrt(sqr(t[i].A.x-t[i].C.x)+sqr(t[i].A.y-t[i].C.y));
p[i]:=(ab+bc+ac)/2;
S[i]:=sqrt(p[i]*(p[i]-ab)*(p[i]-bc)*(p[i]-ac));
minS:=S[1];
if S[i]<minS then minS:=S[i];
end;
...
правильнее будет...
Код:
begin
   minS:=0;
   for i:=1 to n do begin
      ab:=sqrt(sqr(t[i].A.x-t[i].B.x)+sqr(t[i].A.y-t[i].B.y));
      bc:=sqrt(sqr(t[i].B.x-t[i].C.x)+sqr(t[i].B.y-t[i].C.y));
      ac:=sqrt(sqr(t[i].A.x-t[i].C.x)+sqr(t[i].A.y-t[i].C.y));
      p[i]:=(ab+bc+ac)/2;
      S[i]:=sqrt(p[i]*(p[i]-ab)*(p[i]-bc)*(p[i]-ac));
   end;
   minS:=S[1];
   for i:=2 to n do
      if S[i]<minS then
         minS:=S[i];
end;
не забывай что N не должно превышать 100 - размерность массивов P и S
Чем меньше вы знаете, тем больше я ценен как специалист...

Последний раз редактировалось Niarb; 27.03.2009 в 19:56.
Niarb вне форума Ответить с цитированием
Старый 27.03.2009, 20:04   #9
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

3)
Код:
a:Array[1..n]of treug;
Код:
k:=0;
Код:
 
for i:=1 to n do
begin
  //if a[i].a.x
//Стоп а где координаты треугольника?
end;
длина вектора:
Код:
r:=SQRT(  (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)  );

Последний раз редактировалось Levsha100; 27.03.2009 в 20:06.
Levsha100 вне форума Ответить с цитированием
Старый 27.03.2009, 20:05   #10
Niarb
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 38
По умолчанию

к пункту 3:
треугольник находится полностью в окружности, если все его вершины находятся внутри окружности...
точка A(x,y) находится в окружности с центром C(x1,y1) и радиусом R если,
...x>=(x1-r) and x<=(x1+r) and y>=(y1-r) and y<=(y+r)
Чем меньше вы знаете, тем больше я ценен как специалист...
Niarb вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57
Функции в С++ bullvinkle Помощь студентам 5 08.12.2008 07:36
Функции Vinni_puh Microsoft Office Excel 1 20.12.2007 05:51
Функции furian Общие вопросы C/C++ 3 18.12.2007 12:48