My function is outputting ang1, ang2, and ang3 in addition to my fprintf statements, why? and how to i fix it? Question asks for my to calculate it the triangle is valid by checking the area.
function [ang1 ang2 ang3 ] = triangle(s1,s2,s3)%TRIANGLE calculates the degrees of all angles given the length of all
%sides.;
s1=input('Please input side 1: ');s2=input('Please input side 2: ');s3=input('Please input side 3: ');s=(s1+s2+s3)/(2);Area=sqrt(s*(s-s1)*(s-s2)*(s-s3));if Area > 0ang1=acosd((s2^2 + s3^2 - s1^2)/(2*s2*s3));ang2=acosd((s3^2 + s1^2 - s2^2)/(2*s3*s1));ang3=acosd((s1^2 + s2^2 - s3^2)/(2*s1*s2)); fprintf('The angle opposite side 1 is %.2f deg\n',ang1); fprintf('The angle opposite side 2 is %.2f deg\n',ang2); fprintf('The angle opposite side 3 is %.2f deg\n',ang3);elseif Area >= 0 fprintf('The 3 sides do NOT form an open triangle!\n');endend
I'm also having a problem with triangle inputs (1,2,3), it says the correct thing but outputs an error with it
Error in ==> triangle at 5s1=input('Please input side 1: ');??? Output argument "ang1" (and maybe others) notassigned during call to "P:\triangle.m>triangle".
do the input statements need to be outside the function?
FINAL SOLUTION:
function [ang1 ang2 ang3]=triangle(s1,s2,s3)%TRIANGLE calculates the degrees of all angles given the length of all%sides.;ang1=acosd((s2^2 + s3^2 - s1^2)/(2*s2*s3));ang2=acosd((s3^2 + s1^2 - s2^2)/(2*s3*s1));ang3=acosd((s1^2 + s2^2 - s3^2)/(2*s1*s2));end %Test_triangle
s1=input('Please input side 1: '); s2=input('Please input side 2: '); s3=input('Please input side 3: '); s=((s1+s2+s3)/(2)); Area=sqrt(s*(s-s1)*(s-s2)*(s-s3)); if Area > 0 [ang1 ang2 ang3]=triangle(s1,s2,s3); fprintf('The angle opposite side 1 is %.2f deg.\n',ang1); fprintf('The angle opposite side 2 is %.2f deg.\n',ang2); fprintf('The angle opposite side 3 is %.2f deg.\n',ang3); elseif Area <= 0 fprintf('The 3 sides do NOT form an open triangle!\n'); end
Best Answer