8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 139 140 141 142 143 144 145 ... 365

Массивы структур могут быть двумерными, тогда обращение к какой-либо структуре осуществляется при помощи двух индексов, а для выяснения размеров массива следует обратиться к функции size. Проход по всем элементам двумерного массива структур можно организовать при помощи двух вложенных циклов for.

% Примечание

Двумерные массивы структур хранятся в памяти по столбцам, как и двумерные числовые массивы, поэтому допустимо обращение к их элементам с одним индексом.

Для контроля и изменения значений полей массива структур удобно пользоваться редактором массивов. Двойной щелчок мышью по одной из клеток таблицы со структурой приводит к появлению ее содержимого в окне, снабженном вкладкой с именем массива и номером структуры. Если требуется одновременно просмотреть несколько структур массива (рис. 8.4), удобно вывести их в разные окна редактора при помощи кнопки Undock в строке меню.

Указание поля структуры позволяет получить доступ к его значению:

» GR201(2).Year ans =

Функция length, примененная к массиву структур GR201, возвращает его Д11ину,т. е. количество входящих в него структур:

» length(GR201) ans =

5

Дополните файл-программу, приведенную в листинге 8.8, операторами, выводящими значения полей структур. Используйте цикл for для перебора всех элементов массива GR201 (листинг 8.9).

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

Len = length(GR201); for k = 1:Len

disp(GR201<k))

end


Создание файл-функций

для работы массивами структур

Обработка данных, содержащихся в массивах структур, требует написания собственных файл-функции. Массив структур передается в качестве аргумента файл-функции, доступ к содержимому полей осуществляется при помощи имен полей структуры так, как описано выше. Операции, применяемые к значениям полей, должны соответствовать содержащимся в них данным. Создайте файл-функцию groupprogr, отображающую среднюю успеваемость группы студентов по каждому курсу (см. табл. 8.1). Результат представьте в виде столбцевой диаграммы, число столбцов которой равно числу курсов. Алгоритм решения достаточно прост. Следует определить число студентов, используя функцию length для нахождения размера массива структуры, и количество курсов, т. е. длину вектора, хранящегося в поле Marks какой-либо структуры. Далее перебором по всем курсам и студентам при помощи двух вложенных циклов for найдите среднее арифметическое из оценок студентов за каждый курс. Запишите результат в вектор-проку и получите столбцевую диаграмму, используя функцию bar. Текст файл-функции groupprogr приведен в листинге 8.10.

[ Листинг 8.10. Файл-функция groupprogr для определения успеваемости [ группы

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

Проверьте работу файл-функции groupprog на примере структуры GR201.

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

Работа с большими объемами данных, содержащихся в массивах структур, значительно облегчается при использовании текстовых файлов для хранения и считывания информации. Запись информации из массива структур в текстовый файл требует применения форматного вывода функцией fprintf (описание форматного вывода приведено в разд. "Форматный вывод" данной главы).

Список вывода fprintf состоит из полей, значения которых необходимо записать в текстовый файл, а форматы соответствуют типам данных, хранящимся в полях. Напишите файл-функцию writegroup, которая реализует построчный вывод значений всех полей структур массива с информацией об успеваемости группы студентов. Имя текстового файла и массив структур являются входными аргументами writegroup. Содержимое файла должно иметь организацию, схожую с табл. 8.1, например такую, как приведена в листинге 8.11. Установите фиксированное число отводимых позиций под вывод строк и чисел и выравнивание в области вывода по левому краю при помощи флага. Для вывода значения поля структуры, содержащего строку, примените спецификатор формата s. Например, формат %-iOs означает выравнивание строки по левому краю в поле вывода из 10 позиций.



0 ... 139 140 141 142 143 144 145 ... 365