Программа 4: Вы будете использовать графический интерфейс для сбора входных данных и отображения выходных данных в этой программе. НЕ ИСПОЛЬЗУЙТЕ input()
или fprintf()
.
1 Используя listdlg()
, вы попросите пользователя выбрать, сколько учеников зачислено в класс. Для простоты список будет включать только числа от 1 до 5. Убедитесь, что пользователю разрешен только один выбор (см. рис. 1). Также рассмотрим случай, когда пользователь нажимает кнопку отмены в любом из двух полей. (Вам нужно отобразить msgbox()
с надписью «Пожалуйста, сделайте выбор», после чего снова появится listdlg()
).
2 Затем вы будете отображать inputdlg()
(см. рис. 2) столько раз, сколько студентов выбрано в listdlg()
(т.е. если пользователь выбрал четырех зачисленных студентов, то inputdlg()
появится четыре раза для сбора информации для каждого студента) . Здесь есть два важных ограничения: во-первых, вам нужно использовать один inputdlg()
с циклом for; во-вторых, вам нужно сохранить всю информацию, введенную в МАССИВ ЯЧЕЙ, который называется Gradebook.
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