- •Лабораторная работа №12 Файловые операции в Matlab
- •Структуры
- •Массив структур
- •Текстовые файлы
- •Запись в текстовый файл
- •Форматный вывод
- •Запись данных массивов структур в текстовый файл
- •Считывание информации из текстового файла
- •Контрольные вопросы
- •Рекомендуемая дополнительная литература
- •Требования к оформлению отчета
Массив структур
Для хранения информации естественно задействовать массив структур, каждый элемент которого является структурой с одинаковым набором полей, содержащих соответствующее значение.
Пример 1. Успеваемость группы по шести предметам представлена в табл. 1.
Табл. 2. К примеру 1.
№ |
Фамилия |
Имя |
|
Оценки по предметам |
|||||
1 |
2 |
3 |
4 |
5 |
6 |
||||
1 |
Алексеев |
Иван |
1980 |
5 |
4 |
4 |
5 |
5 |
4 |
2 |
Васильев |
Сергей |
1981 |
3 |
4 |
4 |
3 |
5 |
4 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
Листинг программы, заполняющей массива структур с помощью оператора присваивания.
% Заполнение первой структуры массива
GR201(1).Family = 'Алексеев';
GR201(1).Name = 'Иван';
GR201(1).Year = 1980;
GR201(1).Marks = [5 4 4 5 5 4];
% Заполнение второй структуры массива
GR201(2).Family = 'Васильев';
GR201(2).Name = 'Сергей';
GR201(2).Year = 1981;
GR201(2).Marks = [3 4 4 3 5 4];
% Заполнение третьей структуры массива
GR201(3).Family = 'Кашин';
GR201(3).Name = 'Павел';
GR201(3).Year = 1979;
GR201(3).Marks = [4 3 4 4 5 4];
% Заполнение четвертой структуры массива
GR201(4).Family = 'Серова';
GR201(4).Name = 'Наталья';
GR201(4).Year = 1981;
GR201(4).Marks = [4 3 3 5 4 5];
% Заполнение пятой структуры массива
GR201(5).Family = 'Терехова';
GR201(5).Name = 'Ольга';
GR201(5).Year = 1980;
GR201(5).Marks = [5 5 5 5 4 5];
Задание 2. Добавьте в массив структур студента Иванова Ивана 1980 года рождения, имеющего следующие оценки: 3, 3, 4, 5, 3, 3.
Создание файл-функции, отображающей среднюю успеваемость группы студентов по каждому курсу и представляющей результат в виде столбцевой диаграммы, число столбцов которой равно числу курсов.
function meanmarks = groupprog(GROUP);
% функция вычисляет средний балл студентов по каждому предмету
% и выводит результат в виде столбцевой диаграммы.
% Возвращает массив, каждый элемент которого равен
% среднему баллу по предмету с соответствующим номером
% использование meanmark = groupprog(GROUP)
% GROUP — массив структур с полями
% Family (строка), Name (строка), Year (число),
% Marks (вектор-строка с отметками)
% нахождение числа студентов в группе
N = length(GROUP);
% Определение количества курсов по информации для
% первого студента
Courses = length(GROUP(1).Marks);
% Инициализация массива meanmarks и заполнение его нулями
meanmarks = zeros(1, Courses);
% Перебор курсов и вычисление средней успеваемости
for course = 1:Courses
% Суммирование баллов, полученных каждым из студентов по
% курсу с номером course
for student = 1:N
meanmarks(course) = meanmarks(course) +...
GROUP(student).Marks(course);
end
% Нахождение среднего арифметического
meanmarks(course) = meanmarks(course) / N;
end
% Построение столбцевой диаграммы
bar(meanmarks);
Задание 3. Исправьте файл-функцию groupprog, таким образом, чтобы получить максимальную и минимальную оценку по каждому курсу.
Для студента с номером NN mod 5+1 определите максимальную, минимальную и среднюю оценку.
