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

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

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

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

04.09.2016, 13:05. Просмотров 442. Ответов 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;
}
0
Миниатюры
Проверить какие круги влезли в круг, а какие нет  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2016, 13:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить какие круги влезли в круг, а какие нет (C++):

Надо проверить какие квадраты влезли в круг а какие нет - C++
Есть круг с центром в a = 150, b = 150 радиус R*R = 1800, стороны квадратов 10. Координаты нижнего левого угла квадрата с...

Узнать, какие разряды включены в число, а какие нет - C++
Помогите разобраться.Это все надо на Си. Значение int 4 байта т.е 32 бита.Пусть есть число 10(хотя в проге число зарание не известно!!)...

Выяснить, какие из прямых параллельны, а какие - нет - C++
Помогите пожалуйста с программой в dev c++. Условие: Даны уравнения прямых а1х+b1y=c1, a2x+b2y=c2, a3x+b3y=c3. Выяснить, какие из этих...

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе - C++
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...

Следует дать конкретную постановку, т.е. указать, какие классы должны быть реализованы, какие должны быть в ни - C++
Задание: Перечень классов: квитанция, накладная, документ, чек; Порядок выполнения работы 1. Определить иерархию классов (в...

Определить, какие точки находятся на одинаковом расстоянии Если таковых нет программа должна сообщать об этом - C++
Написать программу, которая по заданным координатам трех точек на координатной плоскости определяет, какие точки находятся на одинаковом...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
HelicopterK52
660 / 203 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
04.09.2016, 13:16 #2
Цитата Сообщение от RAFA91 Посмотреть сообщение
но не этот
Код полный шлак.
Цитата Сообщение от RAFA91 Посмотреть сообщение
Надо проверить какие круги влезли в круг а какие нет - C++
Формула на коленке:
R>=Rx && R>=D && (R - D) >= Rx, где
R - радиус большой окружности,
Rx - радиус малой окружности,
D - расстояние от центра большой окружности до центра малой.
0
RAFA91
Заблокирован
04.09.2016, 13:29  [ТС] #3
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
R>=Rx && R>=D && (R - D) >= Rx, где
вот это точно щлак . подождем еще варианты
0
HelicopterK52
660 / 203 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
04.09.2016, 13:46 #4
Цитата Сообщение от RAFA91 Посмотреть сообщение
вот это точно щлак
Это общая формула, дядя, а не код или призыв к действию.

Добавлено через 15 минут
RAFA91, для Вас разжую.
R>=Rx - у Вас это всегда истино, т.к. радиусы всех окружностей жестко заданы.
Значит это нам ни к чему. Идем далее.
R>=D - для Вашего случая это значит отсеивание всех лишних окружностей, и значит нужно только проверить прямоугольник, в который вписана окружность, даже можно не D, а (D-Rx), это может отсеить еще несколько окружностей.
(R - D) >= Rx - ну и дальше проверяем уже нужные окружности, другие мы быстренько отсеяли, сразу всем скопом.
0
MansMI
1227 / 997 / 261
Регистрация: 08.01.2012
Сообщений: 3,641
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;
    }
0
RAFA91
Заблокирован
04.09.2016, 13:56  [ТС] #6
HelicopterK52 мое решение фурычет а ваше не очень. проверьте на практике сперва

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

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

http://ideone.com/DsofiL

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

в соседней теме я вам отвечал, эта задача еще легче квадратов, в этом случае не нужно высчитывать растояние от цетра квадрата до угла, потому что все круги имеют радиус, так что задача сводится к тому чтобы посчитать растояние от центра большой окружности к любой другой, потом к этому числу прибавить радиус и проверить если растояние меньше радиуса большой окружности то мы входим и все, тут погрешности которая возникает с квадратами нет.
0
avgoor
904 / 539 / 116
Регистрация: 05.12.2015
Сообщений: 1,499
04.09.2016, 16:00 #12
Цитата Сообщение от obivan Посмотреть сообщение
тут погрешности которая возникает с квадратами нет.
В той теме лень было отвечать. Но, раз уж, зашла речь про погрешность... Можно и там и тут считать в целых числах и сравнивать с квадратом радиуса. Погрешности не будет.
1
obivan
Падаван С++
401 / 221 / 58
Регистрация: 11.11.2014
Сообщений: 770
Завершенные тесты: 2
04.09.2016, 16:05 #13
avgoor, ну там она не только из за плавающих возникает, в целом там может быть ситуация, когда внешная окружность квадрата может быть правильного радиуса но сам ее круг может выйти за пределы другого, ну а по поводу флоатов и тд., поймите я же тоже код не тестил ) ТС дает огрызок я чисто с точки геометрии, вообще тогда взять какой нибудь эпсилон и сравнивать модуль разности

Добавлено через 1 минуту
ну или да если не нужна точность флоатов, а по коду ТС`a он их там и не юзал вроде то можно и целыми
0
avgoor
904 / 539 / 116
Регистрация: 05.12.2015
Сообщений: 1,499
04.09.2016, 16:08 #14
Цитата Сообщение от obivan Посмотреть сообщение
ну там она не только из за плавающих возникает
Из за чего же еще она может возникнуть? Теорема Пифагора не верна, что ли? Если есть целое число его квадрат тоже целый. И сумма квадратов целых чисел - целая. Если не извлекать корень - нужно сравнить два целых числа. Без какой бы то ни было погрешности.
0
obivan
Падаван С++
401 / 221 / 58
Регистрация: 11.11.2014
Сообщений: 770
Завершенные тесты: 2
04.09.2016, 16:16 #15
Цитата Сообщение от avgoor Посмотреть сообщение
Из за чего же еще она может возникнуть
я имел ввиду что то вроде этого, может я не прав и такой ситуации не возникнет, просто еще раз повторюсь а не тестил этот алгоритм Не берусь утверждать что предложенный мной вариант будет тут работать или не работать, потестить надо
0
Миниатюры
Проверить какие круги влезли в круг, а какие нет  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2016, 16:16
Привет! Вот еще темы с ответами:

Проверить, поместится ли прямоугольник в круг - C++
написать программу, проверяющую, поместится ли прямоугольник площадью Р в круг площадью S. или круг поместится в прямоугольник, или они не...

Какие библиотеки? - C++
Привет, всем! Посоветуйте пожалуйста библиотеки, которые стоит изучить мне на начальном этапе.. Буду очень благодарен! p.s. или...

Какие-то трудности с MVS2013 - C++
Здравствуйте, вот есть такой примитивный код: #include&lt;iostream&gt; using namespace std; int main() { setlocale(LC_ALL,...

У кого какие творения? - C++
Вот кто сейчас хорошо разбирается в C++, кто что написал такого фенаменального?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.09.2016, 16:16
Ответ Создать тему
Опции темы

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