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

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

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

 
 Ответить  Открыть новую тему 
> Площадь по стороне и двум прилежащим углам, Задачка
сообщение
Сообщение #1


Новичок
*

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

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


Вычислить площадь S треугольника по одной стороне "а" и прилежащим к ней углам "альфа" и "бета", при этом углы можно задавать или в градусах или в радианах.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


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

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


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

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

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


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

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

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


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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





- Текстовая версия 23.12.2024 19:34
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name