1) данные, обрабатываемые программой, должны находиться в двоичных файлах;
2) файлы, содержащие исходные данные, следует создавать с помощью вспомогательной программы;
3) запрещается чтение всех данных из исходного файла и размещение их в памяти, следует ограничиться считыванием из файла от нескольких (обычно от одной до трех) компонент, заменяя их по мере необходимости на следующие компоненты, находящиеся в файле;
4) разрешается создание любого числа вспомогательных файлов;
5) в программе запрещается использование функции fseek();
6) при разработке программы следует выделить отдельные подзадачи решаемой задачи и реализовать их решение с помощью подпрограмм;
Дан двоичный файл f, компоненты которого являются целыми числами. Никакая компонента файла не равна нулю. Файл f содержит столько же отрицательных чисел, сколько и положительных. Составить программу, которая переписывает компоненты файла f в файл g так, чтобы в файле g не было двух соседних чисел с одним знаком.
Пояснить по возможности.
Код, с файлом f, в котором записаны компоненты (целые числа) ниже, их нужно переписать в другой файл, чтобы в файле g не было двух соседних чисел с одним знаком. Или записать не в виде структуры, как снизу, а в виде массива.
#include
int main() {
FILE* fsr;
int i;
const int N = 6;
struct {
int chislo;
} rec[N] = { { 30 } , { 20 } , { -27 } , { -26 } , { -21 } , { 21 } } ;
if ((fsr = fopen("chislo.bin", "w+b")) == NULL) {
printf("File not open");
exit(1);
}
for (i = 0; i < N; i++) {
fwrite(&rec, sizeof(rec), 1, fsr);
printf("Chislo = % 3i\n", rec.chislo);
}
fclose(fsr);
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |