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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2011, 13:34   #1
777pro777
Пользователь
 
Регистрация: 25.10.2011
Сообщений: 29
По умолчанию как проще ее написать?

Код:
type pType = record X, Y : Real; end; 
const Triangls : array [1..2, 1..3] of pType = (((X:0; Y:3), (X:-3; Y:-2), (X:3; Y:-2)), ((X:0; Y:-3), (X:-3; Y:2), (X:3; Y:2))); 
function LenOtr(A, B : pType) : Real; begin LenOtr := Sqrt((A.X-B.X)*(A.X-B.X)+(A.Y-B.Y)*(A.Y-B.Y)); end; 
function STriangle(A, B, C : pType) : Real; 
begin 
STriangle := Sqrt((LenOtr(A, B)+LenOtr(A, C)+LenOtr(B, C))*(-LenOtr(A, B)+LenOtr(A, C)+LenOtr(B, C))*(LenOtr(A, B)-LenOtr(A, C)
+LenOtr(B, C))*(LenOtr(A, B)+LenOtr(A, C)-LenOtr(B, C))) / 4; 
end; 
function PointItTriangle(P : pType; T : Byte) : Boolean; 
begin 
PointItTriangle := 
Abs(STriangle(Triangls[T, 1], Triangls[T, 2], Triangls[T, 3]) 
 - STriangle(P, Triangls[T, 1], Triangls[T, 2]) 
 - STriangle(P, Triangls[T, 1], Triangls[T, 3]) 
 - STriangle(P, Triangls[T, 2], Triangls[T, 3])) < 0.0001; 
end; 
function PointInFigure(P : pType) : Boolean; begin PointInFigure := PointItTriangle(P, 1) or PointItTriangle(P, 2); end; 
var P : pType; 
begin 
Write('Enter X: '); ReadLn(P.X); 
Write('Enter Y: '); ReadLn(P.Y); 
Write(PointInFigure(P)); 
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.10.2011 в 14:06.
777pro777 вне форума Ответить с цитированием
Старый 25.10.2011, 13:36   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это что за каша? Отформатируйте код хотя бы.

И используйте тег [CODE] (значок # ) для сохранения форматирования и подсветки кода в сообщении. Кнопка Правка снизу справа.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.10.2011, 13:45   #3
777pro777
Пользователь
 
Регистрация: 25.10.2011
Сообщений: 29
По умолчанию

Код:
type pType = record X, Y : Real; end; 
const Triangls : array [1..2, 1..3] of pType = (((X:0; Y:3), (X:-3; Y:-2), (X:3; Y:-2)), ((X:0; Y:-3), (X:-3; Y:2), (X:3; Y:2))); 
function LenOtr(A, B : pType) : Real; begin LenOtr := Sqrt((A.X-B.X)*(A.X-B.X)+(A.Y-B.Y)*(A.Y-B.Y)); end; 
function STriangle(A, B, C : pType) : Real; begin STriangle := Sqrt((LenOtr(A, B)+LenOtr(A, C)+LenOtr(B, C))*(-LenOtr(A, B)+LenOtr(A, C)+LenOtr(B, C))*(LenOtr(A, B)-LenOtr(A, C)+LenOtr(B, C))*(LenOtr(A, B)+LenOtr(A, C)-LenOtr(B, C))) / 4; end; 
function PointItTriangle(P : pType; T : Byte) : Boolean; begin PointItTriangle := Abs(STriangle(Triangls[T, 1], Triangls[T, 2], Triangls[T, 3]) - STriangle(P, Triangls[T, 1], Triangls[T, 2]) - STriangle(P, Triangls[T, 1], Triangls[T, 3]) - STriangle(P, Triangls[T, 2], Triangls[T, 3])) < 0.0001; end; 
function PointInFigure(P : pType) : Boolean; begin PointInFigure := PointItTriangle(P, 1) or PointItTriangle(P, 2); end; 
var P : pType; 
begin 
Write('Enter X: '); ReadLn(P.X); 
Write('Enter Y: '); ReadLn(P.Y); 
Write(PointInFigure(P)); 
end.
777pro777 вне форума Ответить с цитированием
Старый 25.10.2011, 14:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

OFFTOP

кстати, всем интересующимся темой могу сообщить,
что автор темы решает задачу, описанную в теме:

Задание: "Составить программу, печатающую значение TRUE, если точка с координатами (x, y) принадлежит закрашенной област
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2011, 15:05   #5
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Отформатировать это не значит всё в одну строку вбить!!!
Код:
type pType = record 
 X, Y : Real; 
end; 

const 
 Triangls : array [1..2, 1..3] of pType = (((X:0; Y:3), (X:-3; Y:-2), (X:3; Y:-2)), 
                                                         ((X:0; Y:-3), (X:-3; Y:2), (X:3; Y:2))); 

function LenOtr(A, B : pType) : Real;
begin 
 LenOtr := Sqrt((A.X-B.X)*(A.X-B.X)+(A.Y-B.Y)*(A.Y-B.Y));
end; 

function STriangle(A, B, C : pType): Real; 
begin 
 STriangle := Sqrt( (LenOtr(A, B) + LenOtr(A, C) + LenOtr(B, C) ) * 
                     ( -LenOtr(A, B) + LenOtr(A, C) + LenOtr(B, C) ) *
                     ( LenOtr(A, B) - LenOtr(A, C) + LenOtr(B, C) ) * 
                     ( LenOtr(A, B) + LenOtr(A, C) - LenOtr(B, C))) / 4; 
end;
 
function PointItTriangle(P: pType; T: Byte) : Boolean; 
begin 
 PointItTriangle := Abs(STriangle(Triangls[T, 1], Triangls[T, 2], Triangls[T, 3]) -
                       STriangle(P, Triangls[T, 1], Triangls[T, 2]) - 
                       STriangle(P, Triangls[T, 1], Triangls[T, 3]) - 
                       STriangle(P, Triangls[T, 2], Triangls[T, 3])) < 0.0001; 
end; 

function PointInFigure(P: pType): Boolean;
begin
  PointInFigure := PointItTriangle(P, 1) or PointItTriangle(P, 2);
end; 

var 
 P: pType; 

begin 
 Write('Enter X: ');
 ReadLn(P.X); 
 Write('Enter Y: ');
 ReadLn(P.Y); 
 Write(PointInFigure(P)); 
end.
Хотя бы как-то так. Плюс комментарии к коду не помешали бы.
Хакинг - не преступление, а способ выживания.

Последний раз редактировалось Ghost of Night; 25.10.2011 в 15:20.
Ghost of Night вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проще сравнивать даты? silvestr PHP 13 17.04.2011 22:24
Нужно найти ошибку или написать алгоритм по проще! (строки) velamut Помощь студентам 3 18.06.2010 16:09
Разворачивающиеся меню. Как проще? Web-Gangsta JavaScript, Ajax 4 05.05.2009 17:46
Как проще создать оконное приложение Mrloony Общие вопросы C/C++ 3 22.09.2008 00:00
Помогите написать прогу!Среди заданных целых чисел k, l, m найти пары кратных.Написать по проще чемЭесть vdv08 Паскаль, Turbo Pascal, PascalABC.NET 4 04.04.2008 16:56