Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 06.02.2012, 22:25   #1 (permalink)
Натуличка
Member
 
Регистрация: 06.02.2012
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача на Паскале

помогите, пожалуйста решить задачу по программированию! Дан произвольный треугольник АВС, для которого определен следующий нахарактерных параметров: а, в, с-стороны треугольника. альфа, бетта, гамма-углы, h-высота, опущенная на сторону с. S-площадь, Р-периметр. по трем заданным параметрам S, h, бетта вычислить все остальные. нужно написать програмку!
Натуличка вне форума   Ответить с цитированием

Старый 06.02.2012, 22:25
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Я думаю, что тут найдется много полезного для вас

Задача в паскале
Задача на Паскале и С++
Задача на Паскале
Задача на Паскале
Задача на Паскале

Старый 06.02.2012, 23:09   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Программу написать несложно, но главное тут подбор формул, а это зависит от вашего уровня владения математическим аппаратом.

Сторону а можно вычислить через синус угла бета, сторону b - через тангенс угла бета. Сторону с - через формулу нахождения площади треугольника Герона, где полупериметр можно заменить полусуммой всех сторон и выразить с. Затем вычислите периметр треугольника. Остальные углы можно вычислить через арктангенсы.

Напишите все эти формулы - программу вам сделают за пару минут.
AlexZir вне форума   Ответить с цитированием
Старый 07.02.2012, 11:30   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Напишите все эти формулы - программу вам сделают за пару минут.
Да ладно, чего там эти формулы - глупость школьная. Тем более, что можно даже и без Герона.
Код:
VAR
 a,b,c,alpha,beta,gamma,S,h:Real;

Function GrRad(X:Real):Real;
begin
 GrRad:=(X/180)*Pi;
end;

Function RadGr(X:Real):Real;
begin
 RadGr:=(X/Pi)*180;
end;

Function ArcSin(X:Real):Real;
begin
 If Round(X*100000)=100000 then ArcSin:=Pi/2 else
 IF Round(X*100000)=-100000 then ArcSin:=-Pi/2 else
 ArcSin:=ArcTan(X/SQRT(1-X*X));
end;

BEGIN
 Write('S= ');
 Readln(S);
 Write('h= ');
 Readln(h);
 Write('beta (degrees)= ');
 Readln(beta);
 beta:=GrRad(beta);
 a:=h/Sin(beta);
 c:=S*2/h;
 b:=Sqrt(sqr(h)+sqr(c-a*cos(beta)));
 alpha:=ArcSin(a*sin(beta)/b);
 gamma:=ArcSin(c*sin(beta)/b);
 Writeln('a= ',a:0:3);
 Writeln('b= ',b:0:3);
 Writeln('c= ',c:0:3);
 Writeln('h= ',h:0:3);
 Writeln('alpha= ',RadGr(alpha):0:3,' degrees');
 Writeln('beta= ',RadGr(beta):0:3,' degrees');
 Writeln('gamma= ',RadGr(gamma):0:3,' degrees');
 Writeln('S= ',S:0:3);
 Readln
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 07.02.2012, 18:39   #4 (permalink)
Натуличка
Member
 
Регистрация: 06.02.2012
Сообщений: 46
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

пасибо большое ребят) попробую разобраться) очень помогли
Натуличка вне форума   Ответить с цитированием
Старый 07.02.2012, 20:36   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Натуличка Посмотреть сообщение
пасибо большое ребят) попробую разобраться) очень помогли
А, сейчас заметил - там еще периметр (сумму сторон) надо вывести. Ну это уж сами добавьте.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 08.02.2012, 11:24   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так, кажется напортачил, и сильно!
То есть программа годится, но только если треугольник заведомо остроугольный. Если же один из углов - тупой, то тут начинаются неоднозначности и решение сильно усложняется.
Попробую довести до ума.
Довёл.
Да, тут арксинусы не подходят, нужно углы вычислять не по теореме синусов, а по теореме косинусов. Тогда правильно отрабатываются и тупые углы. Фу, стыд мне и позор! Поправил:
Код:
VAR
 a,b,c,alpha,beta,gamma,S,h:Real;

Function GrRad(X:Real):Real;
begin
 GrRad:=(X/180)*Pi;
end;

Function RadGr(X:Real):Real;
begin
 RadGr:=(X/Pi)*180;
end;

Function ArcCos(X:Real):Real;
begin
 If Round(X*100000)=100000 then ArcCos:=0 else
 IF Round(X*100000)=-100000 then ArcCos:=Pi else
 ArcCos:=(Pi/2)-ArcTan(X/SQRT(1-X*X));
end;

BEGIN
 Write('S= ');
 Readln(S);
 Write('h= ');
 Readln(h);
 Write('beta (degrees)= ');
 Readln(beta);
 beta:=GrRad(beta);
 a:=h/Sin(beta);
 c:=S*2/h;
 b:=Sqrt(sqr(h)+sqr(c-a*cos(beta)));
 alpha:=ArcCos((sqr(b)+sqr(c)-sqr(a))/(b*c*2));
 gamma:=ArcCos((sqr(a)+sqr(b)-sqr(c))/(a*b*2));
 Writeln('a= ',a:0:3);
 Writeln('b= ',b:0:3);
 Writeln('c= ',c:0:3);
 Writeln('h= ',h:0:3);
 Writeln('alpha= ',RadGr(alpha):0:3,' degrees');
 Writeln('beta= ',RadGr(beta):0:3,' degrees');
 Writeln('gamma= ',RadGr(gamma):0:3,' degrees');
 Writeln('S= ',S:0:3);
 Writeln('P= ',(a+b+c):0:3);
 Readln
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:39.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.