switch case construction help

21 ビュー (過去 30 日間)
Ajay
Ajay 2012 年 10 月 8 日
(Ajay deleted the question so I (MF) am restoring it as best I can.)
I wrote this body of code:
function output = InteriorAngle(input)
switch input (InteriorAngle)
case 'triangle'
disp ('180')
case 'square'
disp ('360');
case 'pentagon'
disp ('540');
case 'hexagon'
disp ('720');
case 'heptagon'
disp ('900');
case 'octagon'
disp ('1080');
case 'nonagon'
disp ('1260');
case 'decagon'
disp ('1440');
otherwise
disp ('0');
end
end
but for some reason, it's not running when i input,
in = cell(1,3);
in{1,1} = 'triangle';
in{1,2} = 'hexagon';
in{1,3} = 'dodecagon';
out = InteriorAngle(in)
what am i doing wrong?
  8 件のコメント
Walter Roberson
Walter Roberson 2012 年 10 月 8 日
Question content has been edited out of existence by the original poster :(
Matt Fig
Matt Fig 2012 年 10 月 9 日
Saved from google cache:
I wrote this body of code:
function output = InteriorAngle(input)
switch input (InteriorAngle)
case 'triangle'
disp ('180')
case 'square'
disp ('360');
case 'pentagon'
disp ('540');
case 'hexagon'
disp ('720');
case 'heptagon'
disp ('900');
case 'octagon'
disp ('1080');
case 'nonagon'
disp ('1260');
case 'decagon'
disp ('1440');
otherwise
disp ('0');
end
end
but for some reason, it's not running when i input,
in = cell(1,3);
in{1,1} = 'triangle';
in{1,2} = 'hexagon';
in{1,3} = 'dodecagon';
out = InteriorAngle(in)
what am i doing wrong?

サインインしてコメントする。

採用された回答

Matt Fig
Matt Fig 2012 年 10 月 8 日
編集済み: Matt Fig 2012 年 10 月 8 日
You are recursively calling the function from inside the function with no way to terminate the recursion. Additionally, you have named a variable the same name as a MATLAB function (INPUT). In general, you should avoid this practice as it masks the function.
Once you take care of these problems, put your switch inside a FOR loop that loops over the length of the input argument. You switch on IN{ii}.
  4 件のコメント
Ajay
Ajay 2012 年 10 月 8 日
function output = InteriorAngle(input)
for s=1:8,
switch input ('s')
case 'triangle'
disp ('180')
case 'square'
disp ('360');
case 'pentagon'
disp ('540');
case 'hexagon'
disp ('720');
case 'heptagon'
disp ('900');
case 'octagon'
disp ('1080');
case 'nonagon'
disp ('1260');
case 'decagon'
disp ('1440');
otherwise
disp ('0');
end
end
end
Matt Fig
Matt Fig 2012 年 10 月 8 日
Why is s always 1-through-8? What if the length of input is only 3 as in your example?
for ii = 1:length(IN)
switch IN{ii}

サインインしてコメントする。

その他の回答 (1 件)

Ajay
Ajay 2012 年 10 月 8 日
it worked and i get it, thanks!

カテゴリ

Help Center および File ExchangePerformance and Memory についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by