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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
St1nk3r
7 / 7 / 0
Регистрация: 12.01.2010
Сообщений: 10
#1

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

12.01.2010, 22:00. Просмотров 1589. Ответов 3
Метки нет (Все метки)

Какова должна быть длина стороны правильного треугольника a,чтобы из него можно было вырезать n кругов радиуса r?
Помогите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2010, 22:00     Правильный треугольник
Посмотрите здесь:

C++ Правильный ли код?
C++ Не правильный указатель
C++ Не правильный формат вывода =(
Класс правильный треугольник C++
C++ Проверка на правильный ввод
C++ Правильный ответ?
Правильный ответ? C++
Правильный ответ C++
C++ Как сделать правильный else
Выводит не правильный символ C++
C++ Правильный ли цикл
Правильный инклюд *.h! C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7153 / 3293 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.01.2010, 22:47     Правильный треугольник #2
Этот алгоритм не строит треугольник минимальной площади, но по условию это не требуется.

Положить круги в пирамиду.
Например 1, 3, 6, 10, 15 кругов хорошо кладутся в пирамиду.
Если кругов например 5, то рассчитываем на пирамиду из 6, но одного круга нет.
Далее вокруг этой пирамиды легко строится правильный треугольник.
Осталось посчитать его сторону.

Имеется полная пирамида со стороной m кругов.
Очевидно, что n==(1+m)*m/2
Посчитаем сторону описанного треугольника.
В нижнем ряду лежит m кругов.
Между кругами имеется (m-1) промежутков длиной 2*r
a0=(m-1)*2*r

Угол правильного треугольника - 60, половина угла - 30.

Крайний круг лежит на нижней стороне описанного треугольника.
Нужно найти a1 - расстояние от точки касания крайнего круга и нижней стороны до угла треугольника.

Расмотрим маленький треугольник в углу.
sin(30)=1/2=r/2r.
Значит расстояние от угла описанного треугольника до центра ближайшего круга - 2r.

Иcкомое расстояние a1 - это один из катетов маленького треугольника
a1= sqrt(3*r^2)=r*sqrt(3)

Полная сторона: a=a1+a0+a1=r*sqrt(3)+(m-1)*2*r+r*sqrt(3) =>
a= 2*r*(sqrt(3)+(m-1))

Осталось определить m из n.

m - этот минимальное целое, такое что (1+m)*m/2 >= n
St1nk3r
7 / 7 / 0
Регистрация: 12.01.2010
Сообщений: 10
13.01.2010, 14:23  [ТС]     Правильный треугольник #3
спасибо!
попробую решить!

Добавлено через 53 минуты
4тото не выходит у меня ету формулу перевести в сишку(
помогите!

Добавлено через 14 часов 25 минут
4тото не выходит у меня ету формулу перевести в сишку(
помогите!
xxxwerusxxx
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 7
06.04.2010, 09:22     Правильный треугольник #4
а можно это перевести в код delphi?)) или если есть на СИ выложите пожалуйста)
Yandex
Объявления
06.04.2010, 09:22     Правильный треугольник
Ответ Создать тему
Опции темы

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