В каждой паре чисел первое, второе, затем третье, четвертое и т.д. переставить элементы по возрастанию - 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; }
Объяснение кода листинга программы
- Код включает в себя функцию
beforeQuit()
, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу. - Функция
sortPair()
сравнивает два числа и, если они находятся в неправильном порядке, меняет их местами. - Функция
copyTo()
считывает два числа из файла, сортирует их и записывает в другой файл. - В функции
main()
проверяется корректность ввода. Если программа вызывается с менее чем двумя аргументами, выводится сообщение об ошибке и программа завершается с кодом возврата EXIT_FAILURE. - Открываются файлы
fsrc
иfdst
для чтения и записи соответственно. Если один из файлов не может быть открыт, выводится сообщение об ошибке и программа завершается с кодом возврата EXIT_FAILURE. - Вызывается функция
copyTo()
, чтобы прочитать и отсортировать числа из файлаfsrc
и записать их в файлfdst
. - Файлы
fdst
иfsrc
закрываются. - Программа завершается с кодом возврата EXIT_SUCCESS.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д