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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 22:59   #1
Дашуля_18
Пользователь
 
Регистрация: 18.03.2012
Сообщений: 16
Смущение Вычислить количество точек с целочисленными координатами, находящихся внутри кольца, радиусом от R1 до R2>0 ( Паскаль((( )

Вычислить количество точек с целочисленными координатами, находящихся внутри кольца, радиусом от R1 до R2>0

______________
Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В последующем, темы с подобным названием будут закрываться или удаляться,
а автор такой темы будет получать штрафные баллы.
Учтите это на будущее.

Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.03.2012 в 23:28.
Дашуля_18 вне форума Ответить с цитированием
Старый 25.03.2012, 23:13   #2
Langley
Новичок
Джуниор
 
Аватар для Langley
 
Регистрация: 25.03.2012
Сообщений: 7
По умолчанию

Довольно просто.
Ищем точки, координаты которых лежат в диапазоне
Код:
r1 < x < r2 
r1 < y < r2
Для каждой найденной пары вычисляем расстояние R от точки, до начала координат как
Код:
R = SQRT(x^2 + y^2)
Нас интересуют точки, у которых
Код:
r1 < R < r2
(на самом деле достаточно R < r2)

Покажете наработки - помогу дописать или исправить. Полностью код писать не буду.

Upd. Да, естественно там все по модулю... Иначе это будет только четверть кольца.

Последний раз редактировалось Langley; 25.03.2012 в 23:17.
Langley вне форума Ответить с цитированием
Старый 25.03.2012, 23:27   #3
Крот
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 57
По умолчанию

А еще можно вот так вычислить.
1. Посчитать сколько всего точек находятся в целом круге радиуса R2
2. То же самое для R1
А потом вычисли разницу R2 - R1. И получится кол-во точек в кольце
Крот вне форума Ответить с цитированием
Старый 25.03.2012, 23:36   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Langley

Код:
r1 < x < r2 
r1 < y < r2
Если это система неравенств (т.е. условия оба должны выполняться), то Вы ошибаетесь.

Если же это два отдельных НЕЗАВИСИМЫХ условия - то тогда, разумеется, Вы правы...


Крот, не уверен, что это оптимальный алгоритм. Но он, конечно же, даст верный ответ.


p.s. в условиях задачи не сказано, считать ли точки, лежащие на границах кольца... Нужно об этом помнить... (решить для себя считать или не считать и задавать либо нестрогие, либо строгие условия проверки)

p.p.s. а ещё бы я рекомендовал воспользоваться поиском. подобные задачи уже решались на форуме.
вот, например, навскидку:
http://www.programmersforum.ru/showthread.php?t=166089
http://www.programmersforum.ru/showthread.php?t=166218

впрочем, почему бы не процитировать одно из решений прямо здесь?

Код:
Program FOR1;

var 
  x,y,R1, R2: integer;
  koltoch: byte;

begin
  writeln('Введите внутренний радиус R1');
  readln(R1);
  writeln('Введите внешний радиус R2');
  readln(R2);
  koltoch:= 0;
  for x:= -R2 to R2 do
    for y:= -R2 to R2 do
      if (sqrt(sqr(x) + sqr(y)) > R1)
          and (sqrt(sqr(x) + sqr(y)) < R2) then
      begin
        koltoch:= koltoch + 1;
        writeln (x,' ',y);
     end;
  writeln(koltoch);
  readln
end.

Последний раз редактировалось Serge_Bliznykov; 25.03.2012 в 23:45.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.03.2012, 23:43   #5
Langley
Новичок
Джуниор
 
Аватар для Langley
 
Регистрация: 25.03.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Langley
Если это система неравенств (т.е. условия оба должны выполняться), то Вы ошибаетесь.
Нет, очевидно, это не система. Ну, чтобы не было недопонимания, проиллюстрирую кодом, частично используя идею, представленную ниже моей.
Код:
function count(R : integer) : integer;
var
	i, j : integer;
begin
	count := 0;
	for i := 1 to R do 
		for j := 1 to R do
			if (sqrt(i*i + j*j) < R) then
				inc(count);
	count := 4 * count - 4*(R-1) - 3;
end;

var
	r, num : integer;
BEGIN
	writeln('Enter R1: ');
	readln(r);
	num := count(r);
	writeln('Enter R2: ');
	readln(r);
	num := num - count(r);
	writeln('Number of points: ', num);
	readln;	
END.
Upd. Да, R1 в вышеприведенном случае должен быть больше R2. Но это детали... главное - принцип.

Последний раз редактировалось Langley; 26.03.2012 в 00:03.
Langley вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задаnm n точек. Найти m=3,4... точек и построить на них m-угольник: количество точек , лежащих внутри и вне его мин. различается L.Rain Помощь студентам 0 11.12.2011 22:19
Посчитать количество нулей, находящихся на главной диагонали (массив) Sin3v_ Паскаль, Turbo Pascal, PascalABC.NET 6 03.10.2010 16:22
Выделение прямых линий с чтением из файла с координатами точек Gonzo Общие вопросы Delphi 0 19.03.2010 00:33
Найти количество точек плоскости с целочисленными координатами, попадающими в фигуру [Паскаль] @lenk@ Помощь студентам 4 22.10.2009 21:31
точки плоскости, заданные своими координатами, попадают в круг с радиусом R Jondeer Общие вопросы C/C++ 6 16.06.2008 00:06