Question: "Is this triangle right-angled?" - where can I find functions and their uses/learn about the program outside of class
조회 수: 4 (최근 30일)
이전 댓글 표시
So the question I have to answer is:
"Given three positive numbers a, b, c, where c is the largest number, return true if the triangle with sides a, b and c is right-angled. Otherwise, return false."
This is my solution which doesn't work.
function flag = isRightAngled(a, b, c)
flag = true
function flag ~= isRightAngled(a, b, c) flag = false;
end
The first part of the code works fine, and flag returns true when I run the code through test suite on cody courseworks, bolded code is what I added and doesn't work - which I need help with!
Thanks
댓글 수: 2
Stephen23
2017년 3월 3일
편집: Stephen23
2017년 3월 3일
And the line
function flag ~= isRightAngled(a, b, c) flag = false;
is not MATLAB syntax at all. Read the code help (red/orange underlines): they will help you to figure out why this is not valid syntax. Some of the problems in that line are:
- trying to define a nested function without a matching end.
- trying to define a function and allocate its output using ~=.
- Recursive function calling without any limits.
I suspect that none of these were intentional. To fix this you need to how to call functions, and how this is different to defining functions:
답변 (5개)
Lewis Pole
2017년 3월 3일
댓글 수: 1
Walter Roberson
2017년 3월 3일
if a^2 + b^2 == c^2
... except you need to allow for round-off error.
Jan
2017년 3월 3일
d = a^2 + b^2 - c^2;
Now you cannot expect this to be exactly zeros due to the limited precision of floating point values in the double format. But you can check, if the result is "really small". See the command eps(x). The argument of eps() is important for the magnitude of the limit.
댓글 수: 0
Lewis Pole
2017년 3월 3일
댓글 수: 1
Star Strider
2017년 3월 3일
I would add a sort call, since the three sides could be input in any order:
a = rand; % Input Argument
b = rand; % Input Argument
c = rand; % Input Argument
sides = sort([a b c]); % Sort To Determine Order
test = sides(3)^2 - sides(2)^2 + sides(1)^2; % Check Pythagorean Theorem
flag = abs(test < 1E-4); % Allow For Small Errors
댓글 수: 1
Walter Roberson
2022년 1월 16일
test = sides(3)^2 - sides(2)^2 - sides(1)^2; % Check Pythagorean Theorem
maybe ?
참고 항목
카테고리
Help Center 및 File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!