IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Площадь по стороне и двум прилежащим углам, Задачка
Lykash
сообщение 14.02.2012 20:32
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Вычислить площадь S треугольника по одной стороне "а" и прилежащим к ней углам "альфа" и "бета", при этом углы можно задавать или в градусах или в радианах.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
TarasBer
сообщение 15.02.2012 9:17
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Находишь третий угол.
Находишь синусы углов.
Находишь длины сторон (исходя из того, что длина стороны пропорциональна синусу противолежащего угла).
Находишь площадь по Герону.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 16.02.2012 4:30
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Тарас, мне кажется можно чуть проще..

Опускаем высоту на a из противоположной вершины. Она делит a на две части, x и a-x. Находим x из условия

x * tg(alpha) = (a-x) * tg(beta)

Получаем

x = a * tg(beta) / (tg(alpha)+tg(beta))

Теперь высота найдется как x*tg(alpha), а дальше площадь найти не проблема. Как и можно было ожидать, формула получается симметричная:

S = a2 * tg(alpha) * tg(beta) / (tg(alpha)+tg(beta)) / 2

Надеюсь, в таких простых вычислениях негде было ошибиться даже и устно ))
Остается скользкий вопрос.. Чертеж (в голове)) я делал только для острых углов alpha и beta (и, тем самым, положительного x), но мне кажется, что все будет работать и для тупых (одного тупого, ессно)).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 16.02.2012 9:35
Сообщение #4


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Тарас, мне кажется можно чуть проще..

Да, так намного проще, а я ведь ещё подумал - раз у меня в решении вылезает Герон, значит я что-то делаю через задницу...


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lykash
сообщение 16.02.2012 19:31
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


вот помогли нормально на другом форуме:

uses crt;
var a,b,al,bt,gm,s:real;
w:byte;
begin
clrscr;
write('Введите длину строны А a=');
readln(a);
writeln('Угол 1-в градусах 2-в радианах');
repeat
readln(w);
until w in [1..2];
repeat
writeln('Введите прилегающие углы');
readln(al,bt);
if w=1 then
begin
al:=al*pi/180;
bt:=bt*pi/180;
end;
if (al+bt>=pi)or(al<=0)or(bt<=0) then
writeln('Углы должны быть положительные и в сумме меньше 180 градусов');
until (al+bt<pi)and(al>0)and(bt>0);
gm:=pi-al-bt;{угол протмв стороны А}
b:=a*sin(bt)/sin(gm);{сторона В из теоремы синусов}
s:=0.5*a*b*sin(al);{площадь по двум сторонам и углу между ними}
write('S=',s:0:2);
readln
end.


Сообщение отредактировано: Lapp - 17.02.2012 2:47
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 17.02.2012 2:47
Сообщение #6


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Lykash @ 16.02.2012 20:31) *
вот помогли нормально на другом форуме:

Извини, братан, мы не просекли, что "помочь" значит на самом деле сделать за тебя..

В следующий раз хотя бы пиши, что именно хочешь (кроме условия). Ну, или хотя бы "пожалуйста", что ли..
И соблюдай правила (пп. 1 и 2 вверху страницы).
Удачи тебе в поиске "помощников", неуч..


2 TarasBer:
А в коде еще более простой способ )).. хи-хи на наши с тобой седины.. )))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 17.02.2012 10:04
Сообщение #7


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> вот помогли нормально на другом форуме

Да пошёл ты...

> А в коде еще более простой способ

Получается a*a*sin(alhpa)*sin(beta)/(sin(alpha+beta))
Если в твоей формуле с тангенсами домножить на косинусы, то как раз это и получится.

Добавлено через 1 мин.
Ага, нашёл: http://www.cyberforum.ru/turbo-pascal/thread446300.html


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 3:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"