Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

отчет 2 семестр практика 5 11 вариант

.docx
Скачиваний:
11
Добавлен:
08.07.2021
Размер:
55.29 Кб
Скачать

Балтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова

Кафедра И5 «Информационные системы и программная инженерия»

Практическая работа №5 по дисциплине «Программирование на ЯВУ» на тему «Бинарные файлы»

Вариант №11

Выполнил: Студент Ситева Софья Борисовна Группа О401Б Преподаватель: Ракова Ирина Константиновна

Санкт-Петербург 2021 г.

Задача 1

Условие задачи:

Компоненты бинарного файла – целые числа. Удалить из этого файла все положительные числа, кратные 3, добавив в конец файла их количество

Исходные данные:

Целые числа

Результирующие данные:

Файл с числами удовлетворяющими условию

Текст программы:

#include <stdio.h>

#include <locale.h>

void input(FILE* f);

void output(FILE* f);

void processing(FILE* f, FILE* add);

int main()

{

setlocale(LC_ALL, "Rus");

FILE* f = 0, *add = 0;

input(f);

puts("Инициализация:");

output(f);

processing(f, add);

puts("Результат обработки:");

output(add);

}

void input (FILE* f)

{

errno_t errf;

errf = fopen_s(&f, "C:\\Users\\puked\\source\\repos\\pr5_1\\data.bin", "wb");

int x;

if (f == NULL)

{

perror("error ");

return 1;

}

puts("Введите числа. Для окончания ввода нажмите символ");

printf("\t");

while (scanf_s("%d", &x))

fwrite(&x, sizeof(int), 1, f);

puts("Ввод закончен.");

fclose(f);

}

void output(FILE* f)

{

int x;

errno_t errf;

errf = fopen_s(&f, "C:\\Users\\puked\\source\\repos\\pr5_1\\data.bin", "rb");

puts("Вывод:");

fseek(f, 0, SEEK_SET);

while (fread(&x, sizeof(int), 1, f))

printf("\t%d", x);

puts("\nВывод закночен.");

fclose(f);

}

void processing(FILE* f, FILE* add)

{

errno_t errf, erradd;

int num = 0, x;

errf = fopen_s(&f, "C:\\Users\\puked\\source\\repos\\pr5_1\\data.bin", "rb");

erradd = fopen_s(&add, "C:\\Users\\puked\\source\\repos\\pr5_1\\add.bin", "wb");

while (fread(&x, sizeof(int), 1, f))

if ((x % 3 == 0 && x > 0) == 0)

fwrite(&x, sizeof(int), 1, add);

else

num++;

fwrite(&num, sizeof(int), 1, add);

fclose(f);

fclose(add);

remove("C:\\Users\\puked\\source\\repos\\pr5_1\\data.bin");

rename("C:\\Users\\puked\\source\\repos\\pr5_1\\add.bin", "C:\\Users\\puked\\source\\repos\\pr5_1\\data.bin");

}

Результат тестирования программы:

Вывод:

Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.