cheremetdiana
?>

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

Информатика

Ответы

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

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" существует в той же директории, где находится программа, и содержит вещественные числа в бинарном формате.

Надеюсь, это поможет! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

написать программу на Си. Бинарный файл содержит вещественные числа. Удалить отрицательные, в конец файла записать количество удалений.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Сурат1199
sn009
Lolira64
gusrva3001
sohrokova809
Sergei1805
merzlikinairena
Дмитрий-Олейникова
Shevtsov1818
verkop9
tcmir
shilinmikhaillg
dkvsadovoe
gumirovane2294
Liliya-buc