Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример 6. Файл-функция readgroup для считывания данных в массив структур с полями Family, Name (строковые переменные)



Файл-функция readgroup для считывания данных в массив структур с полями Family, Name (строковые переменные), Year (числовая переменная), Marks (вектор-строка из целых чисел). Имя текстового файла задается во входном аргументе readgroup, а выходным аргументом является массив структур. Реализуйте следующий алгоритм в файл-функции.

1. Первая строка является шапкой таблицы, ее не следует заносить в структуру. Используйте функцию fgetl для считывания первой строки.

2. Примените поэлементное считывание в подходящих форматах для заполнения структур массива информацией, содержащейся в каждой строке файла, начиная со второй.

3. Используйте счетчик для обращения к структурам массива, который увеличивается на единицу перед работой с новой структурой.

4. Считывание производите в цикле while, пока не будет достигнут конец файла.

5. При считывании оценок в вектор-строку задайте требуемый размер (один на шесть) в третьем аргументе fscanf.

function GROUP = readgroup(filename)

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

% студентов из текстового файла в массив структур.

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

% filename — имя файла

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

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

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

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

F = fopen(filename, 'r');

% Считывание первой строки с шапкой таблицы

if feof(F) == 0

line = fgetl(F);

end

% Обнуление счетчика числа студентов

count = 0;

% Создание пустого массива структур

GROUP = [];

% Последовательное считывание строк (начиная со второй)

% и распределение информации, содержащейся в ней,

% по полям структур массива GROUP. Каждая строка файла

% содержит информацию об одном студенте

while feof(F) == 0

count = count + 1; % увеличение счетчика студентов

% Считывание строки с фамилией

GROUP(count).Family = fscanf(F, '%s', 1);

% Считывание строки с именем

GROUP(count).Name = fscanf(F, '%s', 1);

% Считывание года рождения

GROUP(count).Year = fscanf(F, '%d', 1);

% Считывание массива с оценками в вектор-столбец

GROUP(count).Marks = fscanf(F, '%d', [1, 6]);

end

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

fclose(F);

Задание 9. Вызовите функцию Group1=readgroup('group.txt'). Покажите содержимое массива Group1.

Задание 10. Исправьте функцию readgroup для чтения данных из файла newgroup.txt. Приведите результаты вызова исправленной функции.





Дата публикования: 2014-12-11; Прочитано: 231 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...