2012-03-20 10 views
0

プログラム4:GUIを使用して入力を収集し、このプログラムで出力を表示します。 input()またはfprintf()を使用しないでください。Matlabの宿題 - セル配列とウィンドウのダイアログ

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

2は、その後、選択したユーザーは、4人の学生が在籍している場合(つまり、そのinputdlg()が情報を収集するために4回表示されますlistdlg()で選択した学生の数としてinputdlg()(図2参照)のように何回も表示されます各生徒のために)。ここでは2つの重要な制約があります:最初に、inputdlg()にforループを使用する必要があります。次に、Gradebookと呼ばれるCELL ARRAYに入力されたすべての情報を保存する必要があります。

3それぞれの生徒の平均成績を計算し、平均と最高の成績が最も高い生徒の名前を表示するmsgbox()を使用してください。 (図3の例を参照)。最初にこのmsgbox()のokをクリックするまで手順4を開始しないように注意してください。 (図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 

答えて

0

最後の行は、私が表示されなければならないとき、私は名前でそれをどのように関連するか、平均値を与えるであろうがOK g=mean(cell2mat({info{2:end}}))

+0

、する必要がありますmsgbox内の生徒の名前との最大平均。 – user1279248

関連する問題