程序4:您將使用GUI在此程序中收集輸入和顯示輸出。請勿使用input()
或fprintf()
。Matlab的作業 - 單元格陣列和窗口對話框
1使用listdlg()
您將要求用戶選擇在班級中註冊的學生人數。爲了簡單起見,列表將只包含從1到5的數字。確保只允許用戶選擇一個選項(見圖1)。還要考慮用戶在兩個框中的任何一個上點擊取消的情況。 (您需要顯示msgbox()
說,請做出選擇,然後listdlg()
將再次出現)。
2然後,你將顯示inputdlg()
(參照圖2)多次在listdlg()
選定的學生的數量(即,如果選擇了用戶四個學生登記,則inputdlg()
會出現四次收集的信息爲每個學生)。現在這裏有兩個重要的限制:首先,你需要使用一個帶有for循環的inputdlg()
;其次,您需要保存在名爲「成績簿」的CELL ARRAY中輸入的所有信息。
3計算每個學生的平均成績,並使用msgbox()
顯示平均成績最高和平均成績最高的學生的姓名。 (請參閱示例belFig。3ow)。請注意,步驟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
好吧,那將會給的意思,但,我如何與名字有關吧,當我有顯示在msgbox中學生姓名的最高平均值。? – user1279248 2012-03-21 12:07:33