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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2015, 20:15   #1
oldproxx
Новичок
Джуниор
 
Регистрация: 25.06.2015
Сообщений: 5
По умолчанию Определить принадлежность точки области

Для данных областей составить линейную программу,которая печатает true,если точка с координатами (x,y) принадлежит закрашенной области,и false- в противном случае
Изображения
Тип файла: jpg IMG_20150609_085109.jpg (103.7 Кб, 117 просмотров)
oldproxx вне форума Ответить с цитированием
Старый 25.06.2015, 21:52   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Я так скажу - чукча не математик, чукча программист..
Поэтому, если опишите все это математически, то я обещаю, переведу все это на Паскаль в виде функции.

Фактически надо решить задачу, где даны координаты всех вершин 4-угольника. Ответом будут 4 неравенства .

Кстати, что значит линейную программу , в Паскале вроде нет такого понятия.
И еще - такие типы можно использовать? Записи (record) вы уже проходили?

PS Хотя в таком общем виде слишком сложно. Можно наверное считать, что две стороны обязательно лежат на осях координат. Тогда входными данными будут 4 числа - x1, x2, y1, y2
Изображения
Тип файла: jpg u4.JPG (23.9 Кб, 96 просмотров)

Последний раз редактировалось type_Oleg; 25.06.2015 в 22:18.
type_Oleg на форуме Ответить с цитированием
Старый 25.06.2015, 22:14   #3
oldproxx
Новичок
Джуниор
 
Регистрация: 25.06.2015
Сообщений: 5
По умолчанию

Record не проходили.
Есть небольшой набросок только:
var x,y:real;
begin
readln(x,y);
writeln((x/6+y/6<=1) and (x/2+y/4>=1) and (x>0) and (y>0));
readln
end.
oldproxx вне форума Ответить с цитированием
Старый 25.06.2015, 22:41   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Ну, так все же решено. Что еще нужно?
Правда, только частный случай, именно для этих координат. Можете заменить 2,6,4,6 на x1, x2, y1, y2 соответственно.
Можно в виде функции сделать
Код:
program oldproxx;

function PtInReg(x,y,x1,y1,x2,y2:Real):Boolean;
begin
 PtInReg:=((x/x2+y/y2)<1) and ((x/x1+y/y1)>1) and (x>0) and (y>0);
// или все < > , или все >=, <= . Зависит от того, попадание на границу считается или нет
end;

var xx,yy:Real;
begin
 ReadLn(xx,yy);
 WriteLn(PtInReg(xx,yy,2,4,6,6));
 ReadLn;	
end.
type_Oleg на форуме Ответить с цитированием
Старый 25.06.2015, 22:47   #5
oldproxx
Новичок
Джуниор
 
Регистрация: 25.06.2015
Сообщений: 5
По умолчанию

writeln который печатает true,можете к программе дописать?
oldproxx вне форума Ответить с цитированием
Старый 25.06.2015, 22:56   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от oldproxx Посмотреть сообщение
writeln который печатает true,можете к программе дописать?
Не понял. А этот что печатает?
Вы запускали ?
Может быть у вас Паскаль какой-то своеобразный. У меня и FPC и Delphi нормально WriteLn логические типы понимает.

Ну, если что, сделайте так
Код:
 if PtInReg(xx,yy,2,4,6,6) then WriteLn('True') else WriteLn('False');

Последний раз редактировалось type_Oleg; 25.06.2015 в 23:10.
type_Oleg на форуме Ответить с цитированием
Старый 25.06.2015, 23:00   #7
oldproxx
Новичок
Джуниор
 
Регистрация: 25.06.2015
Сообщений: 5
По умолчанию

спасибо большое
oldproxx вне форума Ответить с цитированием
Старый 25.06.2015, 23:11   #8
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от oldproxx Посмотреть сообщение
спасибо большое
Исправил 2 букафки.
type_Oleg на форуме Ответить с цитированием
Старый 26.06.2015, 09:50   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Ну, если что, сделайте так
Код:
 if PtInReg(xx,yy,2,4,6,6) then WriteLn('True') else WriteLn('False');
а это уже не подойдёт.
"Линейная" программа - это программа, которая выполняется последовательно, т.е. не имеет ВЕТЛЕНИЙ. If - это условный оператор, после него две ветки выполнения образуются.

не надо идти на поводу у паники.
Код:
WriteLn(  логическое_выражение );
работает во всех известных мне компиляторах/средах Паскаля!
Да и исходя из условия задания, именно его и нужно использовать.



извините за ремарку..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.07.2015, 20:16   #10
Чудо-программист
Форумчанин
 
Регистрация: 22.07.2015
Сообщений: 138
По умолчанию

А еще можно нарисовать область и через getpixel читать.
)))
Чудо-программист вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить принадлежность точки закрашенной области Hikerr Паскаль, Turbo Pascal, PascalABC.NET 8 25.05.2013 09:20
определить принадлежность точки заштрихованной области Fatal Error Паскаль, Turbo Pascal, PascalABC.NET 8 02.07.2012 08:42
Определить принадлежность точки к области Fuckkiller Паскаль, Turbo Pascal, PascalABC.NET 2 21.12.2011 23:28
Определить принадлежность точки к области xrumas Общие вопросы Delphi 1 02.12.2011 02:20
Определить принадлежность точки к области. Водонька Помощь студентам 2 02.10.2011 16:47