Цель работы - закрепление навыков работы с файлами
Принцип чтения из файла такой же как записи - объявление указателя, открытие файла и работа с ним. Однако при чтении из текстового файла надо учитывать его формат
Для реализации программы необходимо:
Шаг 1. – считать число из открытого потока;
Шаг 2. – добавить его к накопленной сумме;
Шаг 3. – повторить шаг 1, если не достигнут конец файла;
Для каждого шага выберем языковую конструкцию или функцию.
Шаг 1. – функция fscanf(in,"%d", &a);
Потребует объявления переменной для приема числа из потока.
Шаг 2. – sum += a; n++;
Потребует объявления переменной для накопления суммы и счетчика чисел в потоке.
На шаге 3 потребуется проверка – достигнут ли конец файла, это можно сделать функцией feof(in), реализовав возврат на шаг 1 с помощью оператора цикла:
while (!feof(in))
{
fscanf(in,"%i", &a);
sum += a;
n++;
}
Начинаем собирать программу с включения заголовочных файлов, использованных функций <stdio.h> и создаем функцию main с объявлением необходимых переменных, инициализации структуры FILE, далее стандартная процедура открытия, обработки с циклом while и закрытия потока.
Запускаем программу на компиляцию и проверяем правильность выполнения..
! Обратите внимание, файл исходных данных должен быть в текущем каталоге.
Варианты преобразований:
Заменить каждое второе число на 0.
Уменьшить все значения большие 100 в два раза.
Уменьшить все положительные числа в 4 раза.
Все значения умножить на 0,3 и округлить до ближайшего целого.
Вместо каждого числа записать его разность с 1000.
Записать среднее арифметическое двух соседних чисел.
К каждому значению добавить его порядковый номер.
Каждое третье значение увеличить вдвое.
Каждое четвертое уменьшить в два раза.
Все значения умножить на 1,66 и округлить в большую сторону.
Все значения заменить их квадратами.
Вместо числа записать текст «положит» или «отриц» в зависимости от знака.
Для чтения используйте fgets()
Содержимое файла winter.txt
Winter1, winter2.
Let’s go skate.
Winter3, winter4.
Don’t be lаte.
Winter5, winter6.
Let’s go rоll.
Winter_7, winter_8.
In the snow.
Winter, Winter!
Winter, Winter!