imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 09.12.2011, 00:29     # 1
DJLOVE
::VIP::
 
Аватар для DJLOVE
 
Регистрация: 30.04.2002
Адрес: Israel
Пол: Male
Сообщения: 7 090

DJLOVE Бог с наворотамиDJLOVE Бог с наворотами
DJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотамиDJLOVE Бог с наворотами
Question 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?

Последний раз редактировалось DJLOVE; 09.12.2011 в 15:14.
DJLOVE вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


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




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