0

程序 4:您将使用 GUI 在此程序中收集输入并显示输出。不要使用input()fprintf().

1 使用listdlg()您将要求用户选择班级注册的学生人数。为简单起见,该列表将仅包括从 1 到 5 的数字。确保只允许用户选择一个(见图 1)。还要考虑用户在两个框中的任何一个中单击取消的情况。(您需要显示一句msgbox()请进行选择,然后listdlg()会再次出现)。

2 然后您将显示inputdlg()(见图2)与选择的学生数量一样多listdlg()(即如果用户选择了四个学生注册,那么inputdlg()将出现四次以收集每个学生的信息)。现在这里有两个重要的约束:首先,您需要使用一个inputdlg()带有 for 循环的约束;其次,您需要将输入的所有信息保存在一个名为“成绩簿”的 CELL ARRAY 中。

3 计算每个学生的平均成绩,并msgbox()显示平均成绩最高的学生的姓名和她/他的平均成绩。(参见下面的示例图 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
4

1 回答 1

0

最后一行应该是g=mean(cell2mat({info{2:end}}))

于 2012-03-21T01:37:27.150 回答