Привет программистам ,
в очередной раз столкнулся с трудностями в Matlab
на этот раз требования задачи таковы:
Программа
1. Примет (input) от пользователя три числа (которые в конечном счете будут представлять из себя стороны треугольника).
2. Проверит что эти числа позитивные , что могут быть сторонами треугольника в плоскости. (В противном случае покажет - ошибку)
3. Если числа годны , отпечатает углы треугольника (input=стороны).
4. Проверит тип треугольника (Равнобедренный или Равносторонний или Тупоугольный или Равносторонний и Тупоугольный).
5. Если никто из типов не подходит покажет сообщение - никаких особенностей.
*При проверки типа треугольника , не забывать что не стоит лишний раз проверять равнобедренность у равносторонних или не пропускать что и равносторонний может быть тупоугольным*
Вот что у меня получилось,
Код HTML:
clc,clear
%input of triangle sides as a vector (or we can choose three variables instead)
N=input('Enter vector of three positive numbers that can represent triangle sides: \n');
if N(1)>0&&N(2)>0&&N(3)>0 %check the input - positive
if (N(1)+N(2))>N(3)&&(N(1)+N(3))>N(2)&&(N(2)+N(3))>N(1) %check the input if it can be triangle at all
A(1)=acosd((N(2).^2+N(3).^2-N(1).^2)./(2*(N(2).*N(3))));
A(2)=acosd((N(1).^2+N(3).^2-N(2).^2)./(2*(N(1).*N(3))));
A(3)=acosd((N(1).^2+N(2).^2-N(3).^2)./(2*(N(1).*N(2))));
fprintf ('Your triangle angles are:\n')
disp (A)
if (A(1)==A(2))&&(A(1)==A(3)) %check if its equilateral
disp ('Your triangle is Equilateral')
elseif A(1)==A(2)||A(1)==A(3)||A(2)==A(3)
disp ('Your triangle is Isosceles')
if A(1)==90||A(2)==90||A(3)==90
disp ('Your triangle is rectangled triangle')
end
elseif A(1)==90||A(2)==90||A(3)==90 %rak 90
disp ('Your triangle is rectangled triangle')
else
disp ('Your triangle have no unique relative lengths at all')
end
else
fprintf ('Error! No planar triangle exists with this sides')
end
else
disp ('Error! I asked for positive numbers only!')
end
При вводе цифр оказалось что программа работает и показывает правильный тип треугольника
Inputs:
- 1, 2, 3
- 7, 7, 7
- 3, 4, 5
- 3, 2, 3
- 5, 7.5, 11
и не показывает тупоугольность для хотя показывает что он равнобедренный
Внимание вопрос : В чем собственно моя ошибка? Или ошибка (bug?) Matlab?