• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Блок-схема

smetaninaanna

Ученик
Регистрация
26 Окт 2015
Сообщения
2
Реакции
0
Баллы
0
Блок-схема

Помогите составить блок схему.
Даны целые числа x1, y1, r1, …, xn, yn, rn, которые задают последовательность окружностей так, что (xi,yi) – координаты центра окружности, ri – радиус окружности. Вывести количество окружностей, не имеющих пересечений с другими.
 
Вам математику или именно блок схему (просто рисовать лень :) )
Математика же проста, надо в цикле от 1 до N
Проверить пересекается ли текущая в по номеру окружность со всеми остальными (для этого нужен естественно второй внутренний цикл)
пересечение проверяем следующим образом
Расстояние между центрами
R = ( x1 - x2 ) * ( x1 - x2 ) + ( y1 - y2 ) * ( y1 - y2 )
Пересекаются если
R <= ( r1 + r2 ) * ( r1 + r2 ) И
((r1 > r2 И R >= r1 - r2) ИЛИ (r1 <= r2 И R>=r2 - r1 ))
Если пересекаются то счетчик пересекающихся окружностей увеличиваем на 1
 
Олег, ну чего наворотил?
Расстояние между центрами R = ( x1 - x2 ) * ( x1 - x2 ) + ( y1 - y2 ) * ( y1 - y2 )
Точнее, так:
Если R - расстояние между центрами, то
R² = (x1-x2)² + (y1-y2)²
Пересекаются если
R <= ( r1 + r2 ) * ( r1 + r2 ) И
((r1 > r2 И R >= r1 - r2) ИЛИ (r1 <= r2 И r2 - r1 ))
Да зачем так сложно? Пересекаются, если R < (r1 + r2). Всё, больше ничего не надо.
Если пересекаются то счетчик пересекающихся окружностей увеличиваем на 1
Точнее, так. Увеличиваем счетчик окружностей, НЕ пересекающих другие, если при прохождении внутреннего цикла не случилось ни одного пересечения. Если случилось - цикл следует прервать.
 
Да зачем так сложно? Пересекаются, если R < (r1 + r2). Всё, больше ничего не надо.
Ну маленько намудрил :) Но надо учесть частные случаи когда одна окружность внутри другой но при этом не пересекают друг друга :)
Кстати задачки интересные, видно на олимпиаду готовится :))
 
Но надо учесть частные случаи когда одна окружность внутри другой но при этом не пересекают друг друга
А! Тогда да, правильно. Я почему-то решил, что речь о кругах с общей площадью.
 
Назад
Сверху