![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 11.11.2014
Сообщений: 13
|
![]()
Помогите написать программу. И возможно ли решение без массивов?
Даны натуральное число n, действительные числа x1,...,x3n. Последовательность чисел x1,...,x3n определяет на плоскости n квадратов со сторонами, параллельными координатным осям: так, x1, x2 - координаты центра первого квадрата, x3 - длина его стороны; аналогично, числа x4, x5, x6 определяют второй квадрат, x7, x8, x9 - третий и т.д. Имеются ли точки, принадлежащие всем квадратам? Если да, то указать координаты одной из них. |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Решение без массивов возможно.
Нужно считать первые 3 числа и принять их за область пересечения. Затем в цикле считывать по 3 числа, искать область пересечения этого квадрата с имеющейся областью и сохранять полученную область вместо имеющейся. Если область на каком-то шаге вырождается (не существует), то печатается ответ "Нет" и происходит выход из цикла. Если после считывания всех квадратов была получена общая для них всех область пересечения, то печатается ответ "Да" и любая точка из этой области.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 11.11.2014
Сообщений: 13
|
![]() Цитата:
BDA, нашёл ваш ответ на подобную задачу из этой темы http://www.programmersforum.ru/showthread.php?t=195787 Можете его прокомментировать? "Мой алгоритм: 1) инициализируем top, right - максимальными, bottom ,left - минимальными значениями 2) считываем 3 числа x, y, a 3) if x-a/2>left then left=x-a/2 if x+a/2<right then rigth=x+a/2 if y-a/2>bottom then bottom=y-a/2 if y+a/2<top then top=y+a/2 4) после считывания всех троек точек, если top>=bottom и right>=left, то точки есть" Последний раз редактировалось Stilet; 11.11.2014 в 20:09. |
|
![]() |
![]() |
![]() |
#4 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]()
Область пересечения удобнее хранить как координаты левой, правой сторон, верха и низа. Затем преобразовать 3 числа, задающих квадрат, в область, заданную 4 числами. Пересечение двух прямоугольников:
лево = максимум(лево1, лево2) право = минимум(право1, право2) верх = минимум(верх1, верх2) низ = максимум(низ1, низ2) Цитата:
![]() Для понимания просто нарисуйте 2 пересекающихся прямоугольника на бумаге и проследите, как получаются выше написанные равенства.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() Последний раз редактировалось BDA; 11.11.2014 в 19:20. |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ещё чуть дополню ответ.
Если на любом шаге область пересечения стала равной нулю (у очередного прямоугольника нет пересечения с предыдущей областью), то уже оставшиеся координаты можно не считывать - ответ отрицательный, общих точек нет. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 11.11.2014
Сообщений: 13
|
![]()
Хорошо. Поясните насчёт координат сторон. Как это выглядит в программе? Я не понимаю
|
![]() |
![]() |
![]() |
#7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]() Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 11.11.2014
Сообщений: 13
|
![]()
Чёрт, это гениально и просто! Спасибо)
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получить в файле q все компоненты файла f являющиеся точными квадратами (Pascal) | Ziner_Fisher | Помощь студентам | 2 | 02.12.2013 14:11 |
Аппроксимация функции наименьшими квадратами | ivan.tiran | Общие вопросы C/C++ | 0 | 27.11.2013 17:59 |
В С++ определить количество цифр в числе, являющихся квадратами некоторого числа | mmf_Valya | Помощь студентам | 1 | 20.10.2012 19:13 |
Найти количество чисел ai(i = 1, 2, ..., n), являющихся полными квадратами. (в Паскале) | vasya1 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 01.02.2012 06:45 |