Автор Тема: натуральные числа на С++  (Прочитано 2565 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zinusik

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
натуральные числа на С++
« : 25 Мая 2011, 20:52:48 »
Помогите разобраться с заданием.. Даны натуральное число n , действительные числа x1,...x3n  . Последовательность чисел x1...x3n  определяет на плоскости  n  квадратов со сторонами, параллельными координатным осям: так x1, x2,  - координаты центра первого квадрата,  x3- длина его стороны; аналогично,x4,x5.x6 числа   определяют второй квадрат,  x7,x8,x9- третий и т.д. Имеются ли точки, принадлежащие всем квадратам? Если да, то указать координаты одной из них.Заранее спасибо!

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: натуральные числа на С++
« Ответ #1 : 01 Июня 2011, 11:32:31 »
Задачка красива.
Первый ход можна реализовать так.
Введём матрицу размером nxn. Элементы матрицы 0 и 1. Если расстояние между центрами
двух квадратов больше суммы половинок их диагоналей ставим 0 - общих точек нет, если
расстояние между центрами двух квадратов меньше суммы половинок их диагоналей или
равно ставим 1 - есть хотя бы одна общая точка. Матрица симметрична.
Если какая-то строка только нули, этот квадрат в отрыве и не имеет общих точек.
Второй ход завис.
Как найти общую точку в противном случае ещё не придумал. Иду на базар.
Может полезно. Удачи!!!

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: натуральные числа на С++
« Ответ #2 : 04 Июня 2011, 13:22:06 »
Лучше так. Создадим с потока данных массивы: X - координаты центра; Y - координаты центра; A - длины горизонтальной стороны; B - длины вертикальной стороны.
Первая проверка.
Вытащим первый квадрат в рабочие ячейки и второй тоже. У кого меньше Х - номер 1, у кого больше - номер 2.
Цикл i=1 to n-1 Проверка 1-го, 2-го, ..., n-1 квадратов
Цикл j=i+1 to n  с последующими
Хб-Хм>(A1+A2)/2 расстояние между центрами больше суммы полусторон - общих точек нет
       Если такое встретили, проверять нечего - общих точек нет. Покидаем циклы и печатаем что надо.
Вторая проверка.
В те же два рабочих поля сначала берём в первое - первый квадрат, во второе - второй.
Принцип сравнения в прицепе.

Циклы такие же. У кого меньше Х - номер 1, у кого больше - номер 2.
У кого меньше Y - номер 1, у кого больше - номер 2.
Результат ставим на первое поле вместо того которы там был и так до конца.
На первом поле прямоугольник общего пересечения. Печатать сообщение.

 

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

Автор epilepsic

Ответов: 6
Просмотров: 4115
Последний ответ 16 Марта 2010, 17:49:00
от InfStudent
Вычисление числа пи, алгоритм подсчета с нужной точностью

Автор AntonResl

Ответов: 4
Просмотров: 3065
Последний ответ 03 Октября 2011, 20:01:50
от AntonResl
Для заданых значений написать программу вычисления числа

Автор Andreimv

Ответов: 6
Просмотров: 2328
Последний ответ 20 Декабря 2011, 16:42:24
от Andreimv
Паскаль, перенести числа из одного массива в др

Автор Nail77

Ответов: 1
Просмотров: 7102
Последний ответ 19 Декабря 2010, 00:12:05
от Данила
Как умножить числа в восьмеричной системе счисления?

Автор latters

Ответов: 1
Просмотров: 7973
Последний ответ 01 Февраля 2011, 18:43:38
от Данила