()の中に数値を入れ​て、その結果を0,1​,2,3,4に振り分​ける関数を作りたいの​ですが関数が認識され​なく困っています

7 views (last 30 days)
海斗
海斗 on 3 Dec 2022
function cal_gp(a)
if a<=100 & a>=90
cal_gp(a)==4.0
elseif a<=89 & a>=80
cal_gp(a)==3.0
elseif a<=79 & a>=70
cal_gp(a)==2.0
elseif a<=69 & a>=60
cal_gp(a)==1.0
elseif a<=59 & a>=0
cal_gp(a)==0
elseif a==-5
cal_gp(a)==non
end
end
  1 Comment
海斗
海斗 on 3 Dec 2022
Edited: 海斗 on 3 Dec 2022
詳しく言うとcal_gp()の()の中にテストの得点を入れることで0,1,2,3,4の成績を得れるという関数を作りたいです。成績の振り分けは、0~59は「0」、60~69は「1」、70~79は「2」、80~89は「3」、90~100は「4」、-5は履修中という意味でnonにしています。matrabを始めたばかりでまったくわかりません。助けていただけると幸いです。よろしくお願いします。

Sign in to comment.

Answers (2)

Atsushi Ueno
Atsushi Ueno on 3 Dec 2022
  • 上記文法に従い関数の出力を定義する必要があります
  • ”cal_gp(a)==**”は「関数cal_gp(a)の出力が**か否か」を出力します
  • 上記では同じ関数の再起呼び出しが続く事になり、out of memoryエラーで停止してしまいます
  • また比較「関数の出力が**か否か」ではなく代入「関数の出力を**にする」だと思います
  • "non"は未定義の変数になるので、他の変数や値(例えばNaN)にする必要があります
  • else if 文はありますが else 文がありません。無くても文法は問題ありませんが、入力が0以上100以下以外(-5を除く)の時は、cal_gp(a)から何も出力されない事になり「関数の出力が定義されない」旨のエラーが出力されます。
function output = cal_gp(a) % 関数の出力outputを定義
if a<=100 & a>=90
output = 4.0; % 以降すべてcal_gp(a)==**からoutput=**に変更
elseif a<=89 & a>=80
output = 3.0;
elseif a<=79 & a>=70
output = 2.0;
elseif a<=69 & a>=60
output = 1.0;
elseif a<=59 & a>=0
output = 0;
elseif a==-5
output = NaN; % nonをNaNに変更
else % else文を追加
disp('input a>100 or a<0 except a==-5');
output = NaN;
end
end

交感神経優位なあかべぇ
MATLABでは、下記のような感じで関数を書きます。
grade = cal_gp(95); % 関数の呼び出し
disp(grade); % 結果の表示
4
dataType = class(grade) % リターン値のデータ型の確認。行の末尾にセミコロンを省略すると、実行結果が表示されます。
dataType = 'double'
% grade : 出力引数(成績)
% a : 引数(テストの得点)
function grade = cal_gp(a)
% MATLABでは、定義した出力引数(grade)に値を代入することで、return値として認識されます。
if a<=100 & a>=90
grade = 4; % MATLABでは、入力した数値はdouble型(倍精度浮動小数点型)になります。(なので、4.0のような小数点表記はいりません)
% double型以外を代入したい場合は、uint32(4)などとデータ型をキャストする必要があります。
elseif a<=89 & a>=80
grade = 3;
elseif a<=79 & a>=70
grade = 2;
elseif a<=69 & a>=60
grade = 1;
elseif a<=59 & a>=0
grade = 0;
elseif a==-5
grade = NaN;
end
end

Categories

Find more on 起動と終了 in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!