IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Matlab: Тип треугольника (http://www.imho.ws/showthread.php?t=146654)

DJLOVE 09.12.2011 00:29

Matlab: Тип треугольника
 
Привет программистам ,
в очередной раз столкнулся с трудностями в 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

и не показывает тупоугольность для хотя показывает что он равнобедренный
  • корень2 1, 1

Внимание вопрос : В чем собственно моя ошибка? Или ошибка (bug?) Matlab?


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

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.