Пятница, 24.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: Seqular, Pavel  

Задача с графиком
AlexanderДата: Суббота, 29.11.2008, 01:01 | Сообщение # 16
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote (ViRuS)
1) А почему тут вводятся координаты двух вершин? Надо ж трёх, ведь это треугольник.

на строчку выше ввод первой вершины.
Quote (ViRuS)
if ((x>=-1,5) and (x<=0) and (y>=0)) -это условие будет означать, что точка вверхнем треугольнике

попробуй подставить точку (0,1)
Quote (ViRuS)
if ((x>=-2) and (x<=1) and (y<0)) -а это условие то что точка попадёт в нижний

(1/2, -1/2)
Quote
Поправь если не так!

как видишь не так. Если координата y точки больше нуля, то точка точно не в нижнем треугольнике, поэтому проверяем не входит ли она в нижний. С верхним аналогично, случай когда y=0 надо рассмотреть отдельно. И её, если точка лежит на границе заштрихованной области, то она не лежит в самой области, т.е. неравенства строгие.


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Суббота, 29.11.2008, 03:41
 
ViRuSДата: Воскресенье, 30.11.2008, 04:38 | Сообщение # 17
Старый знакомый
Группа: Пользователи
Сообщений: 42
Репутация: 0
Замечания: 0%
Статус: Offline
Quote (Alexander)
на строчку выше ввод первой вершины.

блин, ппц, пошёл я часок посплю. Точняк не рассмотрел, башка ппц как гудит.

Добавлено (29.11.2008, 21:09)
---------------------------------------------
Alexander, я не стал ничего нового придумывать а решил воспользоваться той темой про которую ты говорил, вот чё получилось:

Code
Program pr2;
Const x1=-1.5;  y1=0;         
          x2=-1;    y2=1;
          x3=0;     y3=0;         {это короче координаты двух треугольников}
          x4=-3/4;  y4=0;
          x5=-2;    y5=-1;
          x6=1;     y6=0;
Var x,y,s1,s2,s3,s4,s5,s6:real;
begin

readln(x,y);    {координаты точки}

s1:=(y2-y1)*(x-x1)-(x2-x1)*(y-y1);      
s2:=(y3-y2)*(x-x2)-(x3-x2)*(y-y2);
s3:=(y1-y3)*(x-x3)-(x1-x3)*(y-y3);

s4:=(y5-y4)*(x-x4)-(x5-x4)*(y-y4);
s5:=(y6-y5)*(x-x5)-(x6-x5)*(y-y5);
s6:=(y4-y6)*(x-x6)-(x4-x6)*(y-y6);

if ((s1>0) and (s2>0) and (s3>0)) or ((s1<0) and (s2<0) and (s3<0))
or ((s4>0) and (s5>0) and (s6>0)) or ((s4<0) and (s5<0) and (s6<0))

then writeln ('Принадлежит')
else writeln ('­Не принадлежит');
readln;
end.

Добавлено (29.11.2008, 21:23)
---------------------------------------------
Alexander, но вот ошибку заметил, при вводе точки (-0.5;-0.5) пишет мол не принадлежит, хотя судя по графику должна принадлежать.
Блин и точка (-2;-1) тож не принадлежит,

Добавлено (29.11.2008, 21:38)
---------------------------------------------
Вот другой вариант этой же задачи, тут всё ок, всё работает без ошибок!


Code

program zadanie2;

var x, y : real;
begin
    writeln('Введите x и y: ');
    readln(x, y);
    if ((y <= 2 * x + 3) and (y <= -x) and (y >= 0)) or ((y <= 0) and (y <= 2 * x + 3) and (y >= 1 / 3 * (x - 1)))
      then write('принадлежит')
      else write('не принадлежит');
    readln;
end.


Сообщение отредактировал ViRuS - Воскресенье, 30.11.2008, 08:45
 
AlexanderДата: Пятница, 05.12.2008, 04:22 | Сообщение # 18
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
{это короче координаты двух треугольников}

а -3/4- это что за координата?
Quote
Вот другой вариант этой же задачи, тут всё ок, всё работает без ошибок!

Для этой фигуры можно и так, но если хоть чуть-чуть изменить условие, то придётся всё переделывать, а если совершать обход по контуру, то треугольники могут быть абсолютно любыми.
Quote
if ((y <= 2 * x + 3) and (y <= -x) and (y >= 0)) or ((y <= 0) and (y <= 2 * x + 3) and (y >= 1 / 3 * (x - 1)))

Я вижу с логикой вы тоже не дружите, общее условие можно вынести.


Скажем дружно- нафиг нужно!
 
ViRuSДата: Суббота, 06.12.2008, 23:23 | Сообщение # 19
Старый знакомый
Группа: Пользователи
Сообщений: 42
Репутация: 0
Замечания: 0%
Статус: Offline
Quote (Alexander)
Quoteif ((y <= 2 * x + 3) and (y <= -x) and (y >= 0)) or ((y <= 0) and (y <= 2 * x + 3) and (y >= 1 / 3 * (x - 1))) Я вижу с логикой вы тоже не дружите, общее условие можно вынести.

Ну можно вынести точно (y <= 2 * x + 3) , я просто спешил когда делал.

Code

.....
if (y <= 2 * x + 3) then

if ((y <= -x) and (y >= 0)) or ((y <= 0) and (y >= 1 / 3 * (x - 1))

.....

Ну а так вроде всё правильно

 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;