0

プログラム 4: このプログラムでは、GUI を使用して入力を収集し、出力を表示します。input()または使用しないfprintf()でください。

1 listdlg()you を使用すると、ユーザーはクラスに登録している学生の数を選択するよう求められます。簡単にするために、リストには 1 から 5 までの数字のみが含まれます。ユーザーが選択できるのは 1 つだけであることを確認してください (図 1 を参照)。ユーザーが 2 つのボックスのいずれかで [キャンセル] をクリックした場合も考慮してください。msgbox()(「選択してください」というメッセージを表示する必要があります。選択すると、listdlg()再び表示されます)。

2 次に、inputdlg()で選択した学生の数だけ を表示します (図 2 を参照) listdlg()(つまり、ユーザーが登録済みの 4 人の学生を選択した場合、inputdlg()は 4 回表示され、各学生の情報を収集します)。ここで 2 つの重要な制約があります。まず、inputdlg()for ループで制約を使用する必要があります。次に、Gradebook と呼ばれる CELL ARRAY に入力されたすべての情報を保存する必要があります。

3 各生徒の平均点を計算し、msgbox()平均点が最も高い生徒の名前とその生徒の平均点をディスプレイに表示します。(下図の例を参照)。ユーザーが最初に [OK] をクリックするまで、ステップ 4 が開始されないように注意してくださいmsgbox()

4 次に を使用してquestdlg()(図 4 を参照)、ユーザーにプログラムを再度使用するかどうかを尋ねます。彼らが「はい」と言った場合、プログラムは再び開始され、「いいえ」と言った場合、プログラムは終了し、キャンセルをクリックするmsgbox()と、前のステップから再び表示されます。

平均を計算して、生徒の名前とともに表示するにはどうすればよいですか?

前もって感謝します!:)

これは私が得たものです:

clc
clear
ns = {'One','Two','Three','Four','Five'};
[selection ok] = listdlg('liststring',ns,'selectionmode','single');
while ok == 0
    msgbox('Please make a selection')
    [selection ok] = listdlg('liststring',ns,'selectionmode','single');
end
gradebook = {1,selection};
avematrix = [2,selection];
for d = 1:selection
  sinfo = {'Enter student name','Numerical grade for 1st exam (out of 100):',...
  'Numerical grade for 2nd exam (out of 100):','Numerical grade for 3rd exam (out of 100):'};
  info = inputdlg(sinfo);
  gradebook(1,d) = {info};
  name = info {1}
  a=str2double(info{2});
  b=str2double(info{3});
  c=str2double(info{4});
  average = ((a+b+c)/3);
  avematrix(2,d) = average;
  g = mean(info)
end
4

1 に答える 1

0

最後の行はg=mean(cell2mat({info{2:end}}))

于 2012-03-21T01:37:27.150 に答える