Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 357.docx
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.75 Mб
Скачать

14.3 Практические задания по записи файла

1. Напишите программу, которая создает новый файл number.txt в текущей папке и записывает в него произвольную цифру и закрывает файл.

Запишите стандартную последовательность работы с файлом:

int main(void)

{

char fname[20] = “number.txt”;// имяфайла

FILE *out; // файл чисел

puts("Создание файла");

if ((out = fopen(fname, "wt")) == NULL)

{

printf("Ошибка открытия файла для записи");

return 0;

}

/********начало работы с файлом**********/

fprintf(out,"%d",5);// ввод числа 5 в файл

/********конец работы с файлом **********/

fclose(out); // закрытьфайл

return 1;

}

А) Убедитесь, что она работает, открыв файл number.txt из текущейworkspace.

Б) Измените код в функции fopenтак, чтобы следующий раз число 12,56 добавлялось в файл.

В) Добейтесь, чтобы каждое новое число записывалось в файл с новой строки.

2. Измените программу так, чтобы она записывала в файл 50 случайных рациональных чисел от -1 до 1.

3. Организуйте форматированную запись в виде:

| порядковый номер | число |

4. Установите параметр mode при открытии файла как «a+» и запустите программу еще раз.

Проверьте два режима работы – с открытием нового файла и последовательной записью в ранее созданный файл.

14.4 Практические задания на чтение файла

1. Напишите программу, которая вычисляет среднее арифметическое целых чисел, содержащихся в файле.

Любая работа с потоками одинакова, поэтому открываем поток для чтения, последовательность шагов выполнения следующая:

Шаг 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 и закрытия потока.

Запускаем программу на компиляцию и проверяем правильность выполнения.

! Обратите внимание, файл исходных данных должен быть в текущем каталоге.

2.Добавьте в программу поясняющий текст – сколько значений было введено, из какого файла и какой ответ получился.

3. Организуйте в программе вывод среднего геометрического значения (получается от перемножения всех значений и извлечения из этого произведения корня, показатель которого равен числу этих значений).

14.5 Контрольные задания

Написать программу, которая открывает указанный пользователем файл, содержащий выборку рациональных чисел, каждое их которых записано с новой строки.

Выполнить преобразование над ними согласно варианту.

Записать результат в указанный пользователем файл.

Варианты преобразований:

1.Увеличить все четные числа на 1.

2. Вычислить остаток от деления каждого значения на 2.

3. Заменить каждое второе число на 0.

4. Уменьшить все нечетные числа в 4 раза.

5. Все значения умножить на 0,3 и округлить до ближайшего целого.

6. Удалить все значения меньше 5.

7. Записать среднее арифметическое двух соседних чисел.

8. К каждому значению добавить его порядковый номер.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]