Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
RAFA91
Заблокирован
#1

Проверить какие круги влезли в круг, а какие нет - C++

04.09.2016, 13:05. Просмотров 430. Ответов 23
Метки нет (Все метки)

Есть круг с центром в a = 145, b = 145 радиус R = 43,

радиусы малых кругов 5.

Координаты центра нижнего левого круга с индексом 0, 0 (100,100)

Координаты верхнего правого круга с индексом 9, 9 (190,190)

Надо проверить какие круги влезли в круг а какие нет - C++

Предложите пожалуйста вариант решения , но не этот . желательно со своими мыслями.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath>
using namespace std;
 
int main() 
{
    int R = 43, r = 5, a = 145, b = 145;
    
    for (int i=0, y = 100;i<10;i++,y+=2*r)
    {
        for (int j=0,x = 100;j<10;j++,x+=2*r)
        {
            if (pow((x - a),2) + pow((y - b),2) <= pow((R - r),2)) 
            
            cout<<"Круг ("<<i<<","<<j<<") влез."<<endl;
            
            else cout<<"Круг ("<<i<<","<<j<<") не влез !!!"<<endl;
        }
    }
    return 0;
}
Миниатюры
Проверить какие круги влезли в круг, а какие нет  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2016, 13:05     Проверить какие круги влезли в круг, а какие нет
Посмотрите здесь:
C++ Надо проверить какие квадраты влезли в круг а какие нет
Узнать, какие разряды включены в число, а какие нет C++
C++ Выяснить, какие из прямых параллельны, а какие - нет
C++ Проверить, поместится ли прямоугольник в круг
C++ Какие соглашения действуют в C++?
Какие требования WriteConsoleOutputCharacter? C++
C++ Какие здесь идентификаторы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HelicopterK52
659 / 202 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
04.09.2016, 13:16     Проверить какие круги влезли в круг, а какие нет #2
Цитата Сообщение от RAFA91 Посмотреть сообщение
но не этот
Код полный шлак.
Цитата Сообщение от RAFA91 Посмотреть сообщение
Надо проверить какие круги влезли в круг а какие нет - C++
Формула на коленке:
R>=Rx && R>=D && (R - D) >= Rx, где
R - радиус большой окружности,
Rx - радиус малой окружности,
D - расстояние от центра большой окружности до центра малой.
RAFA91
Заблокирован
04.09.2016, 13:29  [ТС]     Проверить какие круги влезли в круг, а какие нет #3
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
R>=Rx && R>=D && (R - D) >= Rx, где
вот это точно щлак . подождем еще варианты
HelicopterK52
659 / 202 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
04.09.2016, 13:46     Проверить какие круги влезли в круг, а какие нет #4
Цитата Сообщение от RAFA91 Посмотреть сообщение
вот это точно щлак
Это общая формула, дядя, а не код или призыв к действию.

Добавлено через 15 минут
RAFA91, для Вас разжую.
R>=Rx - у Вас это всегда истино, т.к. радиусы всех окружностей жестко заданы.
Значит это нам ни к чему. Идем далее.
R>=D - для Вашего случая это значит отсеивание всех лишних окружностей, и значит нужно только проверить прямоугольник, в который вписана окружность, даже можно не D, а (D-Rx), это может отсеить еще несколько окружностей.
(R - D) >= Rx - ну и дальше проверяем уже нужные окружности, другие мы быстренько отсеяли, сразу всем скопом.
MansMI
1137 / 934 / 240
Регистрация: 08.01.2012
Сообщений: 3,400
04.09.2016, 13:46     Проверить какие круги влезли в круг, а какие нет #5
C++
1
2
3
4
5
6
7
8
9
10
    int R = 43, r = 5, a = 145, b = 145;
    int l2=(R-r)*(R-r);
    for(int j=0, x=100; x<=190; x+=10,j++)
    for(int i=0, y=100; y<=190; y+=10,i++)
    {
        int dx=a-x;
        int dy=b-y;
        if(dx*dx+dy*dy<=l2) cout<<"Круг ("<<i<<","<<j<<") влез."<<endl;
        else cout<<"Круг ("<<i<<","<<j<<") не влез !!!"<<endl;
    }
RAFA91
Заблокирован
04.09.2016, 13:56  [ТС]     Проверить какие круги влезли в круг, а какие нет #6
HelicopterK52 мое решение фурычет а ваше не очень. проверьте на практике сперва

Цитата Сообщение от MansMI Посмотреть сообщение
if(dx*dx+dy*dy<=l2)

тут не сколько программирование сколько геометрия. ну нет же.
HelicopterK52
659 / 202 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
04.09.2016, 15:04     Проверить какие круги влезли в круг, а какие нет #7
Цитата Сообщение от RAFA91 Посмотреть сообщение
мое решение фурычет
Именно фурычит, а не работает
Цитата Сообщение от RAFA91 Посмотреть сообщение
проверьте на практике сперва
Эт Вы проверьте, хотя, если писать код как в первом посте,
то вообще ничего работать не будет.
RAFA91
Заблокирован
04.09.2016, 15:06  [ТС]     Проверить какие круги влезли в круг, а какие нет #8
проверил и что

http://ideone.com/DsofiL

а у вас что ?
HelicopterK52
659 / 202 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
04.09.2016, 15:12     Проверить какие круги влезли в круг, а какие нет #9
Цитата Сообщение от RAFA91 Посмотреть сообщение
проверил и что
Не то проверил. Думаю, еще что-то подсказывать нет смысла - как об стенку. Покедова.
RAFA91
Заблокирован
04.09.2016, 15:49  [ТС]     Проверить какие круги влезли в круг, а какие нет #10
вы б хоть условие прочитали для начала.
obivan
Падаван С++
399 / 219 / 57
Регистрация: 11.11.2014
Сообщений: 764
Завершенные тесты: 2
04.09.2016, 15:55     Проверить какие круги влезли в круг, а какие нет #11
Надо проверить какие квадраты влезли в круг а какие нет

в соседней теме я вам отвечал, эта задача еще легче квадратов, в этом случае не нужно высчитывать растояние от цетра квадрата до угла, потому что все круги имеют радиус, так что задача сводится к тому чтобы посчитать растояние от центра большой окружности к любой другой, потом к этому числу прибавить радиус и проверить если растояние меньше радиуса большой окружности то мы входим и все, тут погрешности которая возникает с квадратами нет.
avgoor
884 / 519 / 112
Регистрация: 05.12.2015
Сообщений: 1,464
04.09.2016, 16:00     Проверить какие круги влезли в круг, а какие нет #12
Цитата Сообщение от obivan Посмотреть сообщение
тут погрешности которая возникает с квадратами нет.
В той теме лень было отвечать. Но, раз уж, зашла речь про погрешность... Можно и там и тут считать в целых числах и сравнивать с квадратом радиуса. Погрешности не будет.
obivan
Падаван С++
399 / 219 / 57
Регистрация: 11.11.2014
Сообщений: 764
Завершенные тесты: 2
04.09.2016, 16:05     Проверить какие круги влезли в круг, а какие нет #13
avgoor, ну там она не только из за плавающих возникает, в целом там может быть ситуация, когда внешная окружность квадрата может быть правильного радиуса но сам ее круг может выйти за пределы другого, ну а по поводу флоатов и тд., поймите я же тоже код не тестил ) ТС дает огрызок я чисто с точки геометрии, вообще тогда взять какой нибудь эпсилон и сравнивать модуль разности

Добавлено через 1 минуту
ну или да если не нужна точность флоатов, а по коду ТС`a он их там и не юзал вроде то можно и целыми
avgoor
884 / 519 / 112
Регистрация: 05.12.2015
Сообщений: 1,464
04.09.2016, 16:08     Проверить какие круги влезли в круг, а какие нет #14
Цитата Сообщение от obivan Посмотреть сообщение
ну там она не только из за плавающих возникает
Из за чего же еще она может возникнуть? Теорема Пифагора не верна, что ли? Если есть целое число его квадрат тоже целый. И сумма квадратов целых чисел - целая. Если не извлекать корень - нужно сравнить два целых числа. Без какой бы то ни было погрешности.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2016, 16:16     Проверить какие круги влезли в круг, а какие нет
Еще ссылки по теме:
C++ У кого какие творения?
Какие перспективы у C++ в будущем? C++
C++ Какие книги есть по Си++?
Какие книги посоветуете? C++
C++ Какие направления C++ перспективны?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
obivan
Падаван С++
399 / 219 / 57
Регистрация: 11.11.2014
Сообщений: 764
Завершенные тесты: 2
04.09.2016, 16:16     Проверить какие круги влезли в круг, а какие нет #15
Цитата Сообщение от avgoor Посмотреть сообщение
Из за чего же еще она может возникнуть
я имел ввиду что то вроде этого, может я не прав и такой ситуации не возникнет, просто еще раз повторюсь а не тестил этот алгоритм Не берусь утверждать что предложенный мной вариант будет тут работать или не работать, потестить надо
Миниатюры
Проверить какие круги влезли в круг, а какие нет  
Yandex
Объявления
04.09.2016, 16:16     Проверить какие круги влезли в круг, а какие нет
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru