Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в заданном порядке - C (СИ) (74833)

Узнай цену своей работы

Формулировка задачи:

Заданный файл f, компоненты которого являются целыми числами. Ни один из компонентов файла не равна нулю. Числа в файле идут в следующем порядке: 10 положительных, 10 отрицательных и т.д. Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: 5 положительных, 5 отрицательных, 5 положительных, 5 отрицательных и т.д.

Решение задачи: «Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в заданном порядке»

textual
Листинг программы
void doIt(FILE* in, FILE* out) {
    int arr[20]; int i;
    while(!feof(in)) {
        for(i =0; i<20; ++i)
            fscanf(in, "%d", arr+i);
        for(i=0; i<10; i+=5) {
            int j;
            for(j = 0; j<5;++j)
                fprintf(out, "%d\n", arr[i+j]);
            for(j = 0; j<5;++j)
                fprintf(out, "%d\n", arr[i+j+10]);
        }
    }
}

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. Объявляются две переменные типа int - arr и i, а также два файловых указателя - in и out.
  2. В цикле while с условием !feof(in) происходит чтение 20 чисел из файла, который находится в режиме чтения (in).
  3. Чтения выполняются в цикле for, который проходит по всем элементам массива arr.
  4. Далее, в цикле for с шагом 5 (начиная с 0 и с шагом 5), выполняется запись 5 чисел из массива arr в файл g (out) с помощью функции fprintf.
  5. Записываются числа в формате %d\n (без кавычек), каждое число записывается на новую строку.
  6. Затем, в следующем цикле for с шагом 5 (начиная с 10), происходит запись оставшихся 5 чисел из массива arr в файл g (out).
  7. В конце каждого цикла, каждое число записывается на новую строку.
  8. После завершения чтения всех чисел из файла, программа завершается.

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы