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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2018, 03:11   #1
AlexMi64
Новичок
Джуниор
 
Регистрация: 05.06.2018
Сообщений: 4
По умолчанию Определить количество заданных точек (x,y)

Помогите пожалуйста.

Нужно определить количество заданных точек (x,y), попавших в указанную область,
включая ее границы,
где x = x0 + ih;
y = y0 + ih;
x0 = 0,5; y0 = 1,5;
h = 0,1; i = 1(1)10.
Изображения
Тип файла: jpg Скриншот 01-06-2018 004532.jpg (5.6 Кб, 143 просмотров)
AlexMi64 вне форума Ответить с цитированием
Старый 05.06.2018, 07:35   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

Код:
в цикле по i от 1 до N
начало цикла i
в цикле по j от 1 до M
начало цикла по j
  x = x+ i*h //координаты меняются как положено
   y = y+j*h
if(x<2)and(0<x)and(-2<y)and(y<2) then count:=count +1;//считаем точки по-одной
конец цикла по j
конец цикла по i
выводим ответ Print(count)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 05.06.2018, 14:42   #3
AlexMi64
Новичок
Джуниор
 
Регистрация: 05.06.2018
Сообщений: 4
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
Код:
в цикле по i от 1 до N
начало цикла i
в цикле по j от 1 до M
начало цикла по j
  x = x+ i*h //координаты меняются как положено
   y = y+j*h
if(x<2)and(0<x)and(-2<y)and(y<2) then count:=count +1;//считаем точки по-одной
конец цикла по j
конец цикла по i
выводим ответ Print(count)

Не особо понял как это работает и как это запустить в паскаль.

я записал как:
Код:
for i:=1 to n do
for j:=1 to m do
  begin
   x:=x+i*h;
   y:=y+j*h;
   if (x>0)and(x<2)and(y>-2)and(y<2) then count:=count+1;
 end;
write(count);

Последний раз редактировалось AlexMi64; 05.06.2018 в 15:06.
AlexMi64 вне форума Ответить с цитированием
Старый 05.06.2018, 19:30   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

ну, и в начале, перед циклами, обнулите счётчик count. иначе из глубин памяти может всплыть всякое несуразное числовое значение....
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 05.06.2018, 19:59   #5
AlexMi64
Новичок
Джуниор
 
Регистрация: 05.06.2018
Сообщений: 4
По умолчанию

Простите меня за мою тупость, я только недавно начал учиться.

Вот, что у меня получается, я явно делаю что-то не так. Результат получается всегда 0.

Код:
 Begin
var x,y,h: real;
var j,i,n,m,count: integer;
y:=1.5;
x:=0.5;
h:=0.1;
count:=0;
for i:=1 to n do
for j:=1 to m do
  begin
   x:=x+i*h;
   y:=y+j*h;
   if (x>0)and(x<2)and(y>-2)and(y<2) then count:=count+1;
 end;
write(count);
end.
AlexMi64 вне форума Ответить с цитированием
Старый 05.06.2018, 22:30   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

начальные x0 и y0 возьмите 0 и -2 соответственно. тогда должно пойти. да и переменные перед циклом N и M не мешало бы обозначить, чему они равны?
возьмите N = 20, а M=40.
и вообще, может при помощи другого цикла сделать надо было по заданию? ну, типа WHILE или REPEAT?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 05.06.2018, 22:42   #7
AlexMi64
Новичок
Джуниор
 
Регистрация: 05.06.2018
Сообщений: 4
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
начальные x0 и y0 возьмите 0 и -2 соответственно. тогда должно пойти. да и переменные перед циклом N и M не мешало бы обозначить, чему они равны?
возьмите N = 20, а M=40.
и вообще, может при помощи другого цикла сделать надо было по заданию? ну, типа WHILE или REPEAT?
Возможно и через WHILE. Будет ли разниться результат?

Немного изменил эту строку(подсказали)
Код:
if (y>=0)and(y<=2)and(abs(x)<=2) then count:=count+1;
Результат получился 3, сделал как вы сказали(значения).
AlexMi64 вне форума Ответить с цитированием
Старый 06.06.2018, 08:29   #8
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

ну.а на бумажке прикинуть, сколько точек должно на самом деле получиться?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 06.06.2018, 09:06   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А циклы обязательны? Можно и без циклов, тут же просто найти координаты пересечения двух прямоугольников.

Один имеет координаты левого нижнего угла (X1,Y1) и правого верхнего (X2,Y2)
Другой левого нижнего (x0,y0) и правого верхнего (x0+h*N,y0+h*N)

Левый нижний угол пересечения (max(X1,x0),max(Y1,y0))
Верхний правый угол пересечения (min(X2,x0+h*N),min(Y2,y0+h*N))

Если одна из правых координат меньше левой, то пересечение пустое и нет общих точек

Иначе количество искомых точек
((min(X2,x0+h*N)-max(X1,x0))/h+1)*((min(Y2,y0+h*N)-max(Y1,y0))/h+1)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Среди трех точек с координатами (x1,y1), (x2,y2), (x3,y3) определить количество точек, лежащих во второй четверти и вывести на экран их координаты. Viktoria_ Паскаль, Turbo Pascal, PascalABC.NET 3 20.02.2018 00:07
Выделить из заданных точек вершины квадрата, содержащего максимальное число заданных точек Kef1r C# (си шарп) 8 12.01.2017 16:00
Среди N точек, заданных своими координатами на плоскости, определить самую дальнюю точку от начала координат. zaira001002 Общие вопросы C/C++ 10 30.09.2013 10:26
Определить количество точек Артур22 Общие вопросы Delphi 17 21.02.2011 11:09