Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/37: Рейтинг темы: голосов - 37, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 16

По координатам вершин треугольника найти его углы

12.09.2010, 13:21. Показов 7175. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я новичек в паскале и пока не очень хорошо умею работать с этой программой, моя задача очень проста, но я не могу найти свою ошибку, буду очень признателен если вы мне поможете:

Условие задачи: дано три вершини треугольника А(0;1,7), B(2;1,7), C(1,5;0,85) найти углы треугольника.

вот моё решение:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Program 123;
 
var x1,x2,x3,y1,y2,y3,ab,bc,ac,cosalfa,cosbeta,cosgamma:real;
 
begin
 
вводим координаты точек треугольника
 
writeln('X1=');
readln(x1);
writeln('Y1=');
readln(y1);
writeln('X2=');
readln(x2);
writeln('Y2=');
readln(y2);
writeln('X3=');
readln(x3);
writeln('Y3=');
readln(y3);
 
находим стороны треугольника
ab:=sqrt(sqr(x2-x1)+sqr(y2-y1));
bc:=sqrt(sqr(x3-x2)+sqr(y3-y2));
ac:=sqrt(sqr(x3-x1)+sqr(y3-y1));
 
находим углы
cosalfa:=(sqr(ab)+sqr(ac)-sqr(bc))/(-2*ac*ab);
cosbeta:=(sqr(ab)+sqr(bc)-sqr(ac))/(-2*bc*ab);
cosgamma:=(sqr(bc)+sqr(ac)-sqr(ab))/(-2*ac*bc);
writeln('cosalfa=',cosalfa:4:4);
writeln('cosbeta=',cosbeta:4:4);
writeln('cosgamma=',cosgamma:4:4);
 
readln;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.09.2010, 13:21
Ответы с готовыми решениями:

Найти периметр треугольника, заданного координатами своих вершин, определив функцию для расчета длины отрезка по координатам его вершин.
Помогите пожалуйста решить!СПАСИБО! Найти периметр треугольника, заданного координатами своих...

Найти периметр треугольника, заданного координатами своих вершин, определив финкцию для расчета длины отрезка по координатам его вершин.
Найти периметр треугольника, заданного координатами своих вершин, определив финкцию для расчета...

По заданным координатам вершин треугольника на плоскости определить площадь треугольника
по заданным координатам вершин треугольника на плоскости определить площадь треугольника (не...

11
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
12.09.2010, 13:55
Вроде все правильно, должны вывестись косинусы углов. Если вы не ошиблись в математике (плохо помню теорему косинусов давно учился)

Добавлено через 1 минуту
че то со знаками не то минус где то лишний.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.09.2010, 15:09
nba-player, Вы нашли косинусы углов, сейчас нужно найти сами углы. В Паскале нет функции arccos, только arctan, поэтому либо выразить арккосинус через арктангенс, либо, что проще, воспользоваться другой формулой, через тангенс половинного угла(см. вложение)
тогда конец программы, после нахождения длин сторон пишем так
Pascal
1
2
3
4
5
6
7
8
9
10
11
if (abs(a-b)>c)or(abs(a+b)<c){проверим треугольник ли это, если при вводе не проверили на прямую}
then writeln('Это не треугольник! Повторите ввод.');
until (abs(a-b)<c) and( abs(a+b)>c);
p:=(a+b+c)/2;{найдем полупериметр}
writeln('Углы равны:');
{посчитаем углы в градусах}
write((2*arctan(sqrt((p-b)*(p-c)/(p*(p-a)))))*(180/pi):0:1,#248,'  ');
write((2*arctan(sqrt((p-a)*(p-c)/(p*(p-b)))))*(180/pi):0:1,#248,'  ');
write((2*arctan(sqrt((p-a)*(p-b)/(p*(p-c)))))*(180/pi):0:1,#248);
readln
end.
Вложения
Тип файла: doc Doc1.doc (23.5 Кб, 86 просмотров)
1
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 16
12.09.2010, 21:58  [ТС]
большое спасибо

Добавлено через 11 минут
когда я математически посчитал стороны треугольника, то две из них оказались равными, это значит, что треуголник равнобедренный, а углы при выводе ответа на экран все разные, может подскажете в чем ошибка?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.09.2010, 22:07
Вот программа с этими формулами, только сразу ввожу стороны.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses crt;
var a,b,c,p:real;
begin
clrscr;
repeat
write('a=');readln(a);
write('b=');readln(b);
write('c=');readln(c);
if (abs(a-b)>c)or(abs(a+b)<c)
then writeln('Это не треугольник! Повторите ввод.');
until (abs(a-b)<c) and( abs(a+b)>c);
p:=(a+b+c)/2;
writeln('Углы равны:');
write((2*arctan(sqrt((p-b)*(p-c)/(p*(p-a)))))*(180/pi):0:1,#248,'  ');
write((2*arctan(sqrt((p-a)*(p-c)/(p*(p-b)))))*(180/pi):0:1,#248,'  ');
write((2*arctan(sqrt((p-a)*(p-b)/(p*(p-c)))))*(180/pi):0:1,#248);
readln
end.
Вот результат.
Миниатюры
По координатам вершин треугольника найти его углы  
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.09.2010, 22:08
Цитата Сообщение от nba-player Посмотреть сообщение
когда я математически посчитал
А вы учитываете что программа все считает в радианах, а калькулятор в градусах?
0
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 16
12.09.2010, 22:20  [ТС]
в этой программе я разобрался (в ней сразу нужно воодить величины сторон), а если решать по моему условию и вводить сначала координаты вершин, то углы равными не получаются, вот мое решение после того, как я сделал через арктангенс

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
uses crt;
var p,x1,x2,x3,y1,y2,y3,ab,bc,ac:real;
begin
clrscr;
repeat
 
writeln('X1=');readln(x1);
writeln('Y1=');readln(y1);
writeln('X2=');readln(x2);
writeln('Y2=');readln(y2);
writeln('X3=');readln(x3);
writeln('Y3=');readln(y3);
 
ab:=sqrt(sqr(x2-x1)+sqr(y2-y1));
bc:=sqrt(sqr(x3-x2)+sqr(y3-y2));
ac:=sqrt(sqr(x3-x1)+sqr(y3-y1));
 
if (abs(bc-ac)>ab)or(abs(bc+ac)<ab)
then writeln('Eto ne treugolnik.Povtorite vvod.');
until (abs(bc-ac)<ab) and( abs(bc+ac)>ab);
p:=(bc+ac+ab)/2;
writeln('Ugly ravny:');
 
write((2*arctan(sqrt((p-ac)*(p-ab)/(p*(p-bc)))))*(180/pi):0:1,#248,'  ');
write((2*arctan(sqrt((p-bc)*(p-ab)/(p*(p-ac)))))*(180/pi):0:1,#248,'  ');
write((2*arctan(sqrt((p-bc)*(p-ac)/(p*(p-ab)))))*(180/pi):0:1,#248);
readln
end.
Добавлено через 1 минуту
Puporev, спасибо, что помогли
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
13.09.2010, 07:10
Взял ваш код, ввел координаты равнобедренного треугольника, как ни странно 2 угла оказались равными. Так что сочиняете вы что-то.
Миниатюры
По координатам вершин треугольника найти его углы  
0
0 / 0 / 0
Регистрация: 12.09.2010
Сообщений: 16
13.09.2010, 08:01  [ТС]
значит при получении задачи на зачете мне дали неправильные координаты, спасибо за помощь
0
Gimme
12.12.2010, 20:49
if (abs(bc - ac) >= ab) or (abs(bc + ac) <= ab) then

думаю ещё равенство нужно было учесть...

Полезная инфа, спасибо)
...Polly...
21.09.2011, 23:33
Цитата Сообщение от nba-player Посмотреть сообщение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
uses crt;
var p,x1,x2,x3,y1,y2,y3,ab,bc,ac:real;
begin
clrscr;
repeat
 
writeln('X1=');readln(x1);
writeln('Y1=');readln(y1);
writeln('X2=');readln(x2);
writeln('Y2=');readln(y2);
writeln('X3=');readln(x3);
writeln('Y3=');readln(y3);
 
ab:=sqrt(sqr(x2-x1)+sqr(y2-y1));
bc:=sqrt(sqr(x3-x2)+sqr(y3-y2));
ac:=sqrt(sqr(x3-x1)+sqr(y3-y1));
 
if (abs(bc-ac)>ab)or(abs(bc+ac)<ab)
then writeln('Eto ne treugolnik.Povtorite vvod.');
until (abs(bc-ac)<ab) and( abs(bc+ac)>ab);
p:=(bc+ac+ab)/2;
writeln('Ugly ravny:');
 
write((2*arctan(sqrt((p-ac)*(p-ab)/(p*(p-bc)))))*(180/pi):0:1,#248,'  ');
write((2*arctan(sqrt((p-bc)*(p-ab)/(p*(p-ac)))))*(180/pi):0:1,#248,'  ');
write((2*arctan(sqrt((p-bc)*(p-ac)/(p*(p-ab)))))*(180/pi):0:1,#248);
readln
end.

ввела этот код, выдается ошибка 113, на слове UNTIL... в других кодах с оператором IF такая же проблема, ошибка 113 на слове ELSE... подскажите, в чем проблема???
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
22.09.2011, 08:51
Цитата Сообщение от ...Polly... Посмотреть сообщение
ввела этот код, выдается ошибка 113, на слове UNTIL.
Никаких ошибок синтаксического характера в коде нет, у меня, да и наверняка у автора все работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.09.2011, 08:51
Помогаю со студенческими работами здесь

По координатам вершин треугольника рассчитать площадь каждого треугольника
Условие: по координатам вершин треугольника рассчитать a) площадь каждого треугольника; b)...

По координатам трех вершин некоторого треугольника найти его площадь и периметр
Помогите написать программу! 1) По координатам трех вершин некоторого треугольника найти его...

По координатам трёх вершин некоторого треугольника найти его площадь и периметр
я начинающий программист, учусь в вузе, лекцию читает один препод, практику введет другой, один на...

Процедуры и функции: по координатам вершин треугольника найти длины всех его сторон
Даны координаты трёх вершин треугольника. Найти длины всех его сторон. 1) как процедуру; 2) как...

Найти периметр треугольника по координатам его вершин
Решите задачи пожалуйста буду очень благодарен. Составьте программу вычисления периметра...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru