М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
rahbfwBbdqbqdI
rahbfwBbdqbqdI
22.09.2021 11:31 •  Информатика

написать программу на Си. Бинарный файл содержит вещественные числа. Удалить
отрицательные, в конец файла записать количество удалений.

👇
Ответ:
Опооовоа
Опооовоа
22.09.2021
Хорошо, вот пошаговое решение задачи:

1. Определение переменных и открытие файла:
- Создайте переменные для хранения количества удалений (назовите ее `count`) и для текущего числа из файла (назовите ее `num`).
- Откройте бинарный файл для чтения и записи в режиме "rb+" (бинарное чтение и обновление).

2. Поиск отрицательных чисел и удаление:
- Используя цикл, который будет выполняться до тех пор, пока не достигнут конец файла (означает, что все числа были проверены):
- Считайте текущее число из файла и сохраните его в переменную `num`. Если происходит ошибка чтения из файла, выйдите из цикла.
- Если `num` меньше нуля (отрицательное число), то:
- Последуйте к текущей позиции в файле, используя функцию `fseek` с аргументами `0L` (сдвиг от начала файла), `SEEK_CUR` (относительный сдвиг) и `sizeof(double)` (размер типа double).
- Увеличьте переменную `count` на 1.
- Если `num` больше или равно нулю, перейдите к следующему числу без изменений.

3. Запись количества удалений в конец файла:
- Разместите указатель в конце файла, используя функцию `fseek` с аргументами `0L`, `SEEK_END` (абсолютный сдвиг) и `-sizeof(double)` (сдвиг на обратное количество байтов, чтобы пройти мимо последнего числа).
- Запишите количество удалений в конец файла, используя функцию `fwrite` с аргументами `&count`, `sizeof(int)` (размер типа int) и 1 (если нужно записать только одно число).

4. Закрытие файла:
- Закройте файл, используя функцию `fclose`.

Вот полный код программы на языке C:

```c
#include

int main() {
int count = 0;
double num;

FILE* file = fopen("input.bin", "rb+");
if (file == NULL) {
printf("Не удалось открыть файл.\n");
return 1;
}

while (!feof(file)) {
fread(&num, sizeof(double), 1, file);

if (num < 0) {
fseek(file, sizeof(double), SEEK_CUR);
count++;
}
}

fseek(file, 0L, SEEK_END);
fwrite(&count, sizeof(int), 1, file);

fclose(file);

printf("Удалено чисел: %d\n", count);

return 0;
}
```

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

Надеюсь, это поможет! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
4,7(92 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ