Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 1 МАТЛАБ 2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
341 Кб
Скачать
☆

Вывод значений полей структуры в командное окно:

Формирование структуры :

authors = struct('name', ' Сидоров С.С .','age',33,'phone','33-33-33');

whos

pause

Файл- программа для заполнения массива структур при помощи

операторов присваивания :

% Заполнение первой структуры массива

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];

Вывод значений полей структуры в командное окно:

Len = max(size(GR201));

for k = 1:Len

disp(GR201(k))

end

Создание файл-функций для работы с массивами структур :

Необходимо использовать ранее созданный массив структур

function meanmarks = groupprog(GROUP);

% Функция вычисляет средний балл студентов по каждому предмету

% и выводит результат в виде столбцевой диаграммы .

% Возвращает массив , каждый элемент которого равен

% среднему баллу по предмету с соответствующим номером

% Использование meanmark = groupprog(GROUP)

% GROUP - массив структур с полями

% Family (строка ), Name ( строка ), Year ( число),

% Marks (вектор - строка с отметками )

% Нахождение числа студентов в группе

N = max(size(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(s tudent).Marks(course);

end

% Нахождение среднего арифметического

meanmarks(course) = meanmarks(course) / N;

end

% Построение столбцевой диаграммы

bar(meanmarks);

Запись данных в текстовый файл:

function writegroup(filename, GROUP)

% Файл- функция для записи таблицы с успеваемостью группы

% студентов в текстовый файл.

% Использование writegroup(filename, GROUP)

% filename - имя файла

% group - массив структур с полями

% Family (строка ), Name ( строка ), Year ( число),

% Marks (вектор - строка с шестью отметками )

% Нахождение числа студентов в группе

N = max(size(GROUP));

% Открытие файла с именем filename для записи

F = fopen(filename, 'w');

% Запись шапки таблицы

fprintf(F, '%-14s %-10s %-4s %-6s\n',...

' Фамилия ', ' Имя ', ' Год ' , 'Оценки');

% Запись в файл содержимого полей каждой структуры в строку

for s = 1:N

fprintf(F, '%-14s %-10s %4.0f...

%2.0f %2.0f %2.0 f %2.0f %2.0f %2.0f\n',...

GROUP(s).Family, GROUP(s).Name, GROUP(s).Year, GROUP(s).Marks);

end

% Закрытие файла

fclose(F);