Раздел: Документация
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
|