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

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

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

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

04.09.2016, 13:05. Просмотров 394. Ответов 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++ Какие ошибки в коде?
Какие ошибки в коде? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HelicopterK52
649 / 192 / 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
649 / 192 / 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
1133 / 930 / 239
Регистрация: 08.01.2012
Сообщений: 3,362
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
649 / 192 / 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
649 / 192 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
04.09.2016, 15:12     Проверить какие круги влезли в круг, а какие нет #9
Цитата Сообщение от RAFA91 Посмотреть сообщение
проверил и что
Не то проверил. Думаю, еще что-то подсказывать нет смысла - как об стенку. Покедова.
RAFA91
Заблокирован
04.09.2016, 15:49  [ТС]     Проверить какие круги влезли в круг, а какие нет #10
вы б хоть условие прочитали для начала.
obivan
Падаван С++
396 / 216 / 56
Регистрация: 11.11.2014
Сообщений: 755
Завершенные тесты: 2
04.09.2016, 15:55     Проверить какие круги влезли в круг, а какие нет #11
Надо проверить какие квадраты влезли в круг а какие нет

в соседней теме я вам отвечал, эта задача еще легче квадратов, в этом случае не нужно высчитывать растояние от цетра квадрата до угла, потому что все круги имеют радиус, так что задача сводится к тому чтобы посчитать растояние от центра большой окружности к любой другой, потом к этому числу прибавить радиус и проверить если растояние меньше радиуса большой окружности то мы входим и все, тут погрешности которая возникает с квадратами нет.
avgoor
878 / 513 / 111
Регистрация: 05.12.2015
Сообщений: 1,454
04.09.2016, 16:00     Проверить какие круги влезли в круг, а какие нет #12
Цитата Сообщение от obivan Посмотреть сообщение
тут погрешности которая возникает с квадратами нет.
В той теме лень было отвечать. Но, раз уж, зашла речь про погрешность... Можно и там и тут считать в целых числах и сравнивать с квадратом радиуса. Погрешности не будет.
obivan
Падаван С++
396 / 216 / 56
Регистрация: 11.11.2014
Сообщений: 755
Завершенные тесты: 2
04.09.2016, 16:05     Проверить какие круги влезли в круг, а какие нет #13
avgoor, ну там она не только из за плавающих возникает, в целом там может быть ситуация, когда внешная окружность квадрата может быть правильного радиуса но сам ее круг может выйти за пределы другого, ну а по поводу флоатов и тд., поймите я же тоже код не тестил ) ТС дает огрызок я чисто с точки геометрии, вообще тогда взять какой нибудь эпсилон и сравнивать модуль разности

Добавлено через 1 минуту
ну или да если не нужна точность флоатов, а по коду ТС`a он их там и не юзал вроде то можно и целыми
avgoor
878 / 513 / 111
Регистрация: 05.12.2015
Сообщений: 1,454
04.09.2016, 16:08     Проверить какие круги влезли в круг, а какие нет #14
Цитата Сообщение от obivan Посмотреть сообщение
ну там она не только из за плавающих возникает
Из за чего же еще она может возникнуть? Теорема Пифагора не верна, что ли? Если есть целое число его квадрат тоже целый. И сумма квадратов целых чисел - целая. Если не извлекать корень - нужно сравнить два целых числа. Без какой бы то ни было погрешности.
obivan
Падаван С++
396 / 216 / 56
Регистрация: 11.11.2014
Сообщений: 755
Завершенные тесты: 2
04.09.2016, 16:16     Проверить какие круги влезли в круг, а какие нет #15
Цитата Сообщение от avgoor Посмотреть сообщение
Из за чего же еще она может возникнуть
я имел ввиду что то вроде этого, может я не прав и такой ситуации не возникнет, просто еще раз повторюсь а не тестил этот алгоритм Не берусь утверждать что предложенный мной вариант будет тут работать или не работать, потестить надо
Миниатюры
Проверить какие круги влезли в круг, а какие нет  
RAFA91
Заблокирован
04.09.2016, 16:28  [ТС]     Проверить какие круги влезли в круг, а какие нет #16
Цитата Сообщение от obivan Посмотреть сообщение
в соседней теме я вам отвечал,

это уже совсем другое . не нужно тут думать языком программирования. тут надо вспомнить школу.

может хоть это кого то заставит подумать.
Миниатюры
Проверить какие круги влезли в круг, а какие нет  
obivan
Падаван С++
396 / 216 / 56
Регистрация: 11.11.2014
Сообщений: 755
Завершенные тесты: 2
04.09.2016, 16:30     Проверить какие круги влезли в круг, а какие нет #17
RAFA91, в каком месте это другое ? в той теме я по сути предлагал вам рассматривать квадрат как круг, а здесь просто круг, извините но создается впечатление что вы сами то не понимаете того что вам советуют
RAFA91
Заблокирован
04.09.2016, 16:30  [ТС]     Проверить какие круги влезли в круг, а какие нет #18
вверху над вашим последним сообщением картинка. подумайте.

красная линия это фиктивный круг проверок
obivan
Падаван С++
396 / 216 / 56
Регистрация: 11.11.2014
Сообщений: 755
Завершенные тесты: 2
04.09.2016, 16:49     Проверить какие круги влезли в круг, а какие нет #19
да и в каком покажите мне месте я думал языком программирования я просто вам наглядно показал пример формулы я с таким же успехом мог его записать математически

Добавлено через 3 минуты
Цитата Сообщение от RAFA91 Посмотреть сообщение
вверху над вашим последним сообщением картинка. подумайте.
????????????????????????????????? вы о чем о том что круг там торчит, я помойму вам специально написал в случае с полноценным кругом той ситуации которая возникает с квадратом НЕТ, и именно этой погрешности не будет, может быть то о чем писал avgoor, и он сказал как это решить

Добавлено через 2 минуты
Цитата Сообщение от RAFA91 Посмотреть сообщение
красная линия это фиктивный круг проверок
мне интересно что вы тем рисунком пытетесь сказать ?

Добавлено через 3 минуты
вы вообще вникли в суть того что я вам предложил
допустим круг с которым нам нужно проверить входит ли он в него или нет красный, т.е если что то полностью в красном то входит, предположим что радиус красного круга равен 5, а теперь расписую вам мой алгортим с рисунка видно что зеленый круг лежит на границе т.е растояние от центра равно 5 иииииииииии мы придавляем радиус зеленого круга он условно с рисунка равен 2, 5 + 2 = 7 , 7 > 5 -> зеленый за кругом, проверим черный круг их центры совпадают, но радиус черного круга больше (условно 8) 0 + 8 = 8 -> 8 > 5 черный тоже не входит , а теперь скажите мне о чем вы предлагаете тут подумать ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2016, 16:49     Проверить какие круги влезли в круг, а какие нет
Еще ссылки по теме:

C++ Выяснить, какие из прямых параллельны, а какие - нет
C++ Какие программы вы пишите в C++?
Какие тут ошибки C++
Какие-то трудности с MVS2013 C++
C++ Надо проверить какие квадраты влезли в круг а какие нет

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

Или воспользуйтесь поиском по форуму:
HelicopterK52
649 / 192 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
04.09.2016, 16:49     Проверить какие круги влезли в круг, а какие нет #20
Цитата Сообщение от RAFA91 Посмотреть сообщение
может хоть это кого то заставит подумать.
Ага, подумай, Вам уже писали об этом "круге". Непробиваемый.
Цитата Сообщение от obivan Посмотреть сообщение
создается впечатление что вы сами то не понимаете того что вам советуют
Да он и не читает. Ну или не доходит.
Yandex
Объявления
04.09.2016, 16:49     Проверить какие круги влезли в круг, а какие нет
Ответ Создать тему
Опции темы

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