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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2013, 13:48   #1
Hikerr
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 13
По умолчанию определить принадлежность точки закрашенной области

заданы координаты n точек на плоскости (xi,yi), i=1,2,...,n. Определить, сколько из них принадлежит заштрихованной области. Где (xi u yi) координаты с нижним индексом "i"
Изображения
Тип файла: png 3,2.PNG (7.7 Кб, 192 просмотров)
Hikerr вне форума Ответить с цитированием
Старый 22.05.2013, 21:20   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Условие попадания можно записать так:
Код:
if ((((y>=0) and (x >= -1)) OR ((x >= 0) and (y >= -1))) and (sqr(x) + sqr(y) <= sqr(R))) then ...
R - радиус окружности.





Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 24.05.2013, 17:28   #3
Hikerr
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 13
По умолчанию

не можете ли вы написать полноценную рабочую программу, а то как не пробывал у меня ошибки выходят(
Hikerr вне форума Ответить с цитированием
Старый 24.05.2013, 18:50   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Hikerr, а Вы покажите свою попытку. Поправим, что не так.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.05.2013, 20:08   #5
Hikerr
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 13
По умолчанию да, конечно, вот

var x,y,l:real;
begin
write ('vvedite x='); read(x);
write ('vvedite y='); read(y);
if (x*x+y*y<=l*l)and(x>=-1)and(y>=-1)and not(x<0) and (y<0)
then write ('yes') else write ('no');
readln;
readln;
end.
Hikerr вне форума Ответить с цитированием
Старый 24.05.2013, 20:28   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
var
  x, y, r: real;
begin
  write('Input x, y, r = ');
  readln(x, y, r);
  if (x*x + y*y <= r*r) and (x >= -1) and (y >= -1) and not((x < 0) and (y < 0)) then
    writeln('yes')
  else
    writeln('no');
  readln;
end.
Введите 3 числа и нажмите enter.

Это упрощенный вид программы, а Вам нужен:
Код:
var
  n, i, count: integer;
  x, y, r: real;
begin
  count := 0;
  write('Input r, n = ');
  readln(r, n);
  for i := 1 to n do
  begin
    readln(x, y);
    //увеличение счетчика по условию
  end;
  writeln(count);
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 24.05.2013 в 20:34.
BDA вне форума Ответить с цитированием
Старый 24.05.2013, 20:39   #7
Hikerr
Пользователь
 
Регистрация: 22.05.2013
Сообщений: 13
По умолчанию

спасибо большое, а как работает 2 ой код
Hikerr вне форума Ответить с цитированием
Старый 24.05.2013, 20:42   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Пожалуйста.
Второй код пока никак не работает.
Во-первых, поскольку из рисунка не получается узнать радиус, то он запрашивается.
Во-вторых, запрашивается количество точек.
В-третьих, в цикле считываются пары чисел.
Затем Вы должны правильно вставить условный оператор из первого кода во второй, чтобы счетчик count увеличивался только в случае попадания точки в область.
После обработки всех пар на экран печатается значение счетчика.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.05.2013, 09:20   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Помнится, на олимпиаде в 10 классе, подобную задачу решал через getPixel() - или как-то так (сори, давно не писал на паскале, не помню)...
смысл в том, что можно тупо узнать цвет закрашенного пикселя)
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить принадлежность точки заштрихованной области Fatal Error Паскаль, Turbo Pascal, PascalABC.NET 8 02.07.2012 08:42
определить принадлежность точки к заштрихованной области (турбо делфи) alexanderrrr Помощь студентам 2 16.06.2012 18:25
Определить принадлежность точки к области 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