Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Файл-функция 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!