Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 05.06.2018, 04:11   #1
AlexMi64
Новичок
 
Регистрация: 05.06.2018
Сообщений: 4
Репутация: 10
По умолчанию Определить количество заданных точек (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 Кб, 27 просмотров)
AlexMi64 вне форума   Ответить с цитированием
Старый 05.06.2018, 08:35   #2
NetSpace
Профессионал
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Адрес: п.Путеец, Печорский р-н
Сообщений: 1,270
Репутация: 482
По умолчанию

Код:

в цикле по 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, 15:42   #3
AlexMi64
Новичок
 
Регистрация: 05.06.2018
Сообщений: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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 в 16:06.
AlexMi64 вне форума   Ответить с цитированием
Старый 05.06.2018, 20:30   #4
NetSpace
Профессионал
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Адрес: п.Путеец, Печорский р-н
Сообщений: 1,270
Репутация: 482
По умолчанию

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

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

Вот, что у меня получается, я явно делаю что-то не так. Результат получается всегда 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, 23:30   #6
NetSpace
Профессионал
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Адрес: п.Путеец, Печорский р-н
Сообщений: 1,270
Репутация: 482
По умолчанию

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

Цитата:
Сообщение от 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, 09:29   #8
NetSpace
Профессионал
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Адрес: п.Путеец, Печорский р-н
Сообщений: 1,270
Репутация: 482
По умолчанию

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

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

Один имеет координаты левого нижнего угла (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)
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


02:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru