Домашнее задание Matlab - массивы ячеек и диалоги - PullRequest
0 голосов
/ 21 марта 2012

Программа 4: Вы будете использовать GUI для сбора входных данных и отображения выходных данных в этой программе. НЕ ИСПОЛЬЗУЙТЕ input() или fprintf().

1 Используя listdlg(), вы попросите пользователя выбрать, сколько учеников зачислено в класс. Для простоты в список будут включены только цифры от 1 до 5. Убедитесь, что пользователю разрешен только один выбор (см. Рис. 1). Также рассмотрим случай, когда пользователь нажимает кнопку «Отмена» в любом из двух полей. (Вам нужно отобразить msgbox(), сказав, пожалуйста, сделайте выбор, затем снова появится listdlg()).

2 Затем вы отобразите inputdlg() (см. Рис. 2) столько раз, сколько студентов выбрано в listdlg() (т. Е. Если пользователь выбрал четырех учащихся, то inputdlg() отобразится четыре раз собирать информацию для каждого студента). Теперь есть два важных ограничения: во-первых, вам нужно использовать один inputdlg() с циклом for; во-вторых, вам нужно сохранить всю информацию, введенную в ячейку с именем «Журнал успеваемости».

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

1 Ответ

0 голосов
/ 21 марта 2012

последняя строка должна быть g=mean(cell2mat({info{2:end}}))

...