2012-03-20 52 views
0

程序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 

回答

0

的最後一行應該是g=mean(cell2mat({info{2:end}}))

+0

好吧,那將會給的意思,但,我如何與名字有關吧,當我有顯示在msgbox中學生姓名的最高平均值。? – user1279248 2012-03-21 12:07:33