Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Ирино
0 / 0 / 0
Регистрация: 24.09.2009
Сообщений: 24
#1

Ветвление - Pascal

24.11.2009, 14:55. Просмотров 514. Ответов 1
Метки нет (Все метки)

Даны натуральные числа x1,x2,x3,y1,y2,y3. Пинадлежит ли нчало координат треугольнику с вершинами (x1,y1)(x2у2)(х3у3)? Помогите пожалуйста...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2009, 14:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ветвление (Pascal):

На ветвление.
Определить сумму цифр трёхзначного числа. Вывести его на печать, если сумма...

Ветвление
Помогите, пожалуйста, с решением задачи на ветвление. Заранее ВСЕМ СПАСИБО!

Ветвление
помогите выполнить задание...

Ветвление
Помогите решить оч надо Условие Валя и Вера на своём участке собрали А кг...

ветвление
Ракета запускается с точки на экваторе и развивает скорость v км/с. Каков...

While do и сложное ветвление
кусок кода i:=1; while i<=5 do begin if (a mod 2) = 0 then begin...

1
Puporev
Модератор
54149 / 41782 / 28889
Регистрация: 18.05.2008
Сообщений: 98,331
24.11.2009, 17:34 #2
Лучший ответ Сообщение было отмечено Ирино как решение

Решение

Вот код, не мой, я через треугольники делал, этот код лучше. Он для любой точки подходит, но этот вариант именно Ваш.
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
{
   Лабораторная работа: проверка на то, что точка, заданная своими координатами, лежит внутри
треугольника
   (c) RSC, 1997-2002
}
program asd;
var x1,x2,x3,y1,y2,y3:real;
    wh:               boolean;
function rawn(x1,y1,x2,y2,x3,y3: real): boolean;
var pr1,pr2: real;
begin
 pr1:=(x2-x1)*(-y1)-(y2-y1)*(-x1);
 pr2:=(-x1)*(y3-y1)-(-y1)*(x3-x1);
 if pr1*pr2>=0 then rawn:=true else rawn:=false;
end;
begin
 write('Введите х1:');
 readln(x1);
 write('Введите y1:');
 readln(y1);
 write('Введите х2:');
 readln(x2);
 write('Введите y2:');
 readln(y2);
 write('Введите х3:');
 readln(x3);
 write('Введите y3:');
 readln(y3);
 
  if (rawn(x1,y1,x2,y2,x3,y3) and rawn(x2,y2,x3,y3,x1,y1) and rawn(x3,y3,x1,y1,x2,y2)) then
  wh:=true else wh:=false;
 write ('Начало координат ');
 if (wh=false) then write ('не ');
 write ('лежит внутри этого треугольника');
 readln;
end.
 
 
+---------------+
 
End of file.
Добавлено через 2 минуты
А вот вариант с треугольниками.
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
геометрические алгоритмы: Точка внутри треугольника?  Вариант 2          }
{ ------------------------------------------------------------------------ }
{ Идея: Пусть есть треугольник ABC и точка P. Если Площадь ABC равна сумме }
{ площадей треугольников ABP,BCP,CAP, то точка внутри треугольника.        }
{ ------------------------------------------------------------------------ }
 
(* функция вычисляет расстояние между точками *)
Function Distance(ax,ay,bx,by:real):real;
begin
  Distance := sqrt(sqr(ax-bx)+sqr(ay-by));
end;
 
(* функция вычисляет площадь треугольника по формуле Герона *)
Function SqrGeron(ax,ay,bx,by,cx,cy:real):real;
var p,a,b,c :real;
Begin
  a:=Distance(cx,cy,bx,by);
  b:=Distance(ax,ay,cx,cy);
  c:=Distance(ax,ay,bx,by);
  p:=(a+b+c)/2;
  SqrGeron:=sqrt(p*(p-a)*(p-b)*(p-c));
End;
 
(* функция определеяет относительное положение точки: внутри или нет *)
Function PointInsideTreangle(ax,ay,bx,by,cx,cy,px,py:real):boolean;
const error = 1.000001;
var s,s1,s2,s3 :real;
begin
    PointInsideTreangle:=TRUE;
    s :=SqrGeron(ax,ay,bx,by,cx,cy);
    s1:=SqrGeron(ax,ay,bx,by,px,py);
    s2:=SqrGeron(bx,by,cx,cy,px,py);
    s3:=SqrGeron(cx,cy,ax,ay,px,py);
    if s*error>s1+s2+s3 then PointInsideTreangle:=TRUE
                        else PointInsideTreangle:=FALSE;
end;
 
Begin (* Тело основной программы *)
   writeln(PointInsideTreangle(1,1,8,1,1,8,2,2)); {TEST1, Inside}
   writeln(PointInsideTreangle(1,1,8,1,1,8,6,6)); {TEST2, Outside}
End.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2009, 17:34
Привет! Вот еще темы с решениями:

Программа на ветвление.
Всем доброго времени суток! Помогите пожалуйста написать программу на...

Задание на ветвление
Дано три действительных числа. Выяснить что больше, квадрат минимального или...

Паскаль ветвление
помогите решить пожалуйста Два прямоугольника расположенные в первом квадранте...

Ветвление Паскаль.
помогите составить программу!!! Пусть (k, l), (m, n) - поля шахматной доски:...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru