- •Лабораторная работа №4
- •Цикл for
- •Цикл while, суммирование рядов
- •4.2.2 Операторы ветвления
- •Условный оператор if
- •Организация ветвления
- •4.2.3 Приоритет операций
- •4.2.4 Текстовые файлы
- •Открытие файла, считывание данных и закрытие файла
- •Запись в текстовый файл
- •Запись строк
- •Форматный вывод
- •Считывание информации из текстового файла
- •3.3. Порядок выполнения работы
- •3.4 Контрольные вопросы
Считывание информации из текстового файла
Функция fscanf позволяет последовательно считывать данные, хранящиеся в текстовом файле и записывать их в переменные подходящих типов. Условно можно считать, что fscanf осуществляет обратное действие по отношению к fprintf, а именно, считывание в заданном формате. Содержимое текстового файла составляют такие элементы, как текст и числа. Текст всегда считывается в строковые переменные, а числа можно занести как в строковые, так и числовые переменные. Вызов функции fscanf производится с тремя входными аргументами — идентификатором файла, строкой с форматом и числом считываемых в данном формате объектов и одним выходным аргументом, в который записывается результат.
а = fscanf(идентификатор, 'формат', число считываемых элементов)
Для считывания строки предусмотрен формат %s, для целых чисел — %d, а для вещественных — %g. Необходимо следить за соответствием формата и данных, хранящихся в файле. Работу с функцией fscanf проще всего понять на нескольких простых примерах. Пусть, например, в файле studentl.txt, состоящем из одной строки, содержится информация о студенте:
Александров 1990 учащийся 201 4.5
Файл-программа, приведенная ниже, записывает 'Александров' в строковую переменную Family, целое число (год) 1990 в переменную Year, 'учащийся1 в строковую переменную status, целое число (номер группы) 201 в Group, вещественное число (средний балл) 4.5 в MeanMark. Считывание сопровождается выводом в командное окно для контроля.
F = fopen(student1.txt', 'r');
Family = fscanf(F, '%s', 1)
Year = fscanf(F, '%d', 1)
Status = fscanf(F, '%s', 1)
Group = fscanf(F, '%s', 1)
MeanMark = fscanf(F, '%g', 1)
fclose(F);
Разобранный выше пример демонстрирует самый простой вариант использования fscanf — поэлементное считывание, при котором каждый вызов fscanf заносит в переменную соответствующее значение. Если заменить команды в fscanf на одну
str = fscanf (F, '%s', 5)
и посмотрить содержимое str, то можно увидеть, что вся информация интерпретируется как текстовая и заносится в одну строковую переменную:
str = Александров1990учащийся2014 .5
Допустимо не указывать число считываемых объектов и вызывать функцию fscanf только с двумя входными аргументами. Если при этом используется формат %s, то все содержимое считается в строковую переменную так же, как показано выше. Числовые форматы %d и %g позволяют записать содержимое файла, состоящего из чисел в вектор. Считывание чисел продолжается до тех пор, пока не будет достигнут конец файла или не встретится текст. Пусть, например, в файле res.dat хранится следующая информация (необязательно в одну строку):
1.2274 1.4998
-2.0337 (результаты измерений)
Функция fscanf заносит числовые значения в вектор vect, состоящий из трех элементов, и отображает его содержимое в командном окне. Для последующего считывания строки следует применить fscanf с форматом %s.
Пример: считывание чисел в вектор;
F = fopen('res.dat', 'r');
vect = fscanf (F, '%g' )
fclose (F) ;
3.3. Порядок выполнения работы
3.3.1 Написать программу позволяющую выводить семейство кривых, используя оператор for для изменения параметра а(holdon– для вывода в одно окно):
1) y=exp(-a*x);
2) y=a*sin(x);
3) y=exp(-a*x)+sin(x);
4) y= a*cos(x);
5) y=a*sin(x)+10*x;
6) y=a*sin(x)+x2;
7) y=exp(a*x)+sin(x);
8) y=exp(-a*x)*5;
3.3.2 Создать файл – функцию, которая бы позволила соотносить число Х с каким либо заданным интервалом: А<=X<=B. Результатом программы должно быть сообщение о том, в какой диапазон из трех попало число Х. Предусмотреть ограничение на число параметров при вызове функции.
3.3.3 Написать программу создающую текстовый файл, в который записывается следующая информация: Фамилия, Имя, дата рождения, номер школы, (месяц рождения / год рождения).
3.3.4 Написать программу способную прочитать из файла информацию и вывести ее на экран.