отчет 2 семестр практика 5 11 вариант
.docxБалтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра И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");
}
Результат тестирования программы:
Вывод:
Ожидаемые результаты и результаты тестирования совпали. Поэтому можно сказать, что программа работает правильно.