В каждой паре чисел первое, второе, затем третье, четвертое и т.д. переставить элементы по возрастанию - 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.