В каждой паре чисел первое, второе, затем третье, четвертое и т.д. переставить элементы по возрастанию - C (СИ) (74850)

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

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

Задан текстовый файл, содержащий последовательность вещественных чисел. В каждой паре чисел первое, второе, затем третье, четвертое и т.д. переставить элементы по возрастанию. Результирующую последовательность записать в новый текстовый файл. Если в исходной последовательности количество элементов нечетное, то последний элемент в новый файл не записывать. Ввод из файла я то сделал,но как сделать остальное не получается реализовать

Решение задачи: «В каждой паре чисел первое, второе, затем третье, четвертое и т.д. переставить элементы по возрастанию»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
void beforeQuit() {
    system("pause");
}
 
void sortPair(double* a, double* b) {
    if (*b < *a) {
        double tmp = *a;
        *a = *b;
        *b = tmp;
    }
}
 
void copyTo(FILE* fsrc, FILE* fdst) {
    double a, b;
    while (fscanf(fsrc, "%lf %lf", &a, &b) == 2) {
        sortPair(&a, &b);
        fprintf(fdst, "%lf %lf ", a, b);
    }
}
 
int main(int argc, char* argv[]) {
    atexit(beforeQuit);
 
    if (argc < 3) {
        fprintf(stderr, "Usage: %s <SOURCE.txt> <DESTINATION.txt>\n", argv[0]);
        return EXIT_FAILURE;
    }
 
    FILE* fsrc = fopen(argv[1], "r");
    if (fsrc == NULL) {
        perror(argv[1]);
        return EXIT_FAILURE;
    }
 
    FILE* fdst = fopen(argv[2], "w");
    if (fdst == NULL) {
        perror(argv[2]);
        return EXIT_FAILURE;
    }
 
    copyTo(fsrc, fdst);
 
    fclose(fdst);
    fclose(fsrc);
 
    return EXIT_SUCCESS;
}

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

  1. Код включает в себя функцию beforeQuit(), которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу.
  2. Функция sortPair() сравнивает два числа и, если они находятся в неправильном порядке, меняет их местами.
  3. Функция copyTo() считывает два числа из файла, сортирует их и записывает в другой файл.
  4. В функции main() проверяется корректность ввода. Если программа вызывается с менее чем двумя аргументами, выводится сообщение об ошибке и программа завершается с кодом возврата EXIT_FAILURE.
  5. Открываются файлы fsrc и fdst для чтения и записи соответственно. Если один из файлов не может быть открыт, выводится сообщение об ошибке и программа завершается с кодом возврата EXIT_FAILURE.
  6. Вызывается функция copyTo(), чтобы прочитать и отсортировать числа из файла fsrc и записать их в файл fdst.
  7. Файлы fdst и fsrc закрываются.
  8. Программа завершается с кодом возврата EXIT_SUCCESS.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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