Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2013, 18:20   #1
yusef95
 
Регистрация: 16.05.2013
Сообщений: 4
По умолчанию Геометрическая задача(C++)

Здравствуйте, помогите с задачей, заранее благодарю.


Найти максимальное значение центрального угла верхнего основания шарового слоя b (b изменяется от b1 до b2 с шагом g) и соответствующие значения радиуса нижнего основания r1, радиуса верхнего основания r2 высоты h шарового слоя, для которых объем шарового слоя не меньше объема куба со стороной t. Радиус шара r, из которого вырезан шаровой слой, и центральный угол нижнего основания шарового слоя a остаются неизменными.
b1 b2 g t r a
17 170 1 13,3 28,8 175
31 142 1 8,1 9,6 150
8 121 1 12,4 12,4 162
24 168 1 0,91 0,87 173
46 117 1 3,6 3,9 133


есть эта задача в паскале


Const gradus=2*pi/360; {постоянная необходима для перевода градусов в радианы};
radian=360/(2*pi); {постоянная необходима для перевода радиан в градусы};
{TPascal считает тригонометрические функции, полагая, что переменные заданы в радианах}
{описание используемых переменных}
Var g,h1,h2,r,S_sl,S_kub,b1,b2,maxb,k,A ,B,r1,r2,h:real; {переменные вещественного типа}
Begin {начать}
write('введите b1='); {начальное значение угла b}
readln(b1);
write('введите b2='); {конечное значение угла b}
readln(b2);
write('введите B='); {сторона куба}
readln(B);
write('введите r='); {радиус шара}
readln(r);
write('введите A='); {центральный угол нижнего основания}
readln(A);
g:=-1*gradus; {шаг изменения угла b 1градус, переведённый в радианы}
b1:=b1*gradus; {начальное значение угла b, переведённое в радианы}
b2:=b2*gradus; {конечное значение угла b, переведённое в радианы}
A:=A*gradus;
{рассчитаем радиус основания}
r1:=r*sin(A/2);
r2:=r*sin(b1/2); {значение радиуса r2}
h1:=r*cos(A/2); {рассчитаем расстояние от центра шара до нижнего основания}
h2:=r*cos(b1/2);
h:=h2-h1; {рассчитаем высоту шарового слоя}
maxb:=0; {предварительно заданное максимальное значение угла b}
k:=0;
S_kub:=6*B*B; {рассчитаем площадь поверхности куба}
{цикл1}
while b1>=b2 do {пока выполняется условие цикла1 делать}
begin {повторять цикл1}
S_sl:=2*pi*r1*h; {рассчитаем площадь шарового слоя}
{проверка условия}
if S_sl<=S_kub then {если объём шарового сектора не больше объёма шара, то}
begin {начать}
k:=k+1; {увеличим значение проверочного коэффициента на 1}
{проверка условия}
if maxb<b1 {если текущий центральный угол больше максимального угла, то}
then maxb:=b1;{присвоим значению максимального угла значение текущего угла шарового сектора}
end; {закончить}
b1:=b1+g; {изменить текущее значение угла на шаг g}
r2:=r*sin(b1/2); {рассчитаем радиус верхнего основания
для максимального значения угла}
h2:=r*cos(b1/2); {рассчитаем расстояние от центра шара до верхнего слоя}
h:=h2-h1; {рассчитаем высоту шарового слоя}
end; {закончить цикл1}
if k<>0 then {проверка условия}
begin
r2:=r*sin(maxb/2);
h2:=r*cos(maxb/2);
h:=h2-h1;
S_sl:=2*pi*r1*h; {рассчитаем площадь шарового слоя}
maxb:=maxb*radian; {максимальное значение угла b, переведённое в градусы}
{вывод результата работы программы на экран}
writeln('Максимальный угол= ',maxb:8:4, 'градусов');
writeln('Максимальное значение высоты =',h:8:4);
writeln('Максимальный радиус нижнего основания =',r1:8:4);
writeln('Максимальный радиус верхнего основания =',r2:8:4);
writeln('Площадь шарового слоя =',S_sl:8:4);
writeln('Площадь куба =',S_kub:8:4);
writeln(S_sl:8:4, ' < ',S_kub:8:4, ' -> Условие выполняется ');
end
else
writeln('Для данных значений не выполняются условия задачи');
readln; {ожидание нажатия клавиши на клавиатуре}
end. {конец основной программы}
yusef95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Геометрическая задача (C++) Day Stiff Фриланс 4 12.07.2012 12:50
геометрическая задача zaur.bat Паскаль, Turbo Pascal, PascalABC.NET 0 13.02.2012 19:39
геометрическая задача Nurik1 Паскаль, Turbo Pascal, PascalABC.NET 3 20.11.2011 12:07
Геометрическая задача С++ bloo[d] Общие вопросы C/C++ 9 30.01.2008 18:27