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

Ветвление

24.11.2009, 14:55. Просмотров 1019. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

1
Puporev
Модератор
54697 / 42112 / 29076
Регистрация: 18.05.2008
Сообщений: 99,386
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

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

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

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


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

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

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