Алгоритмы. Работа с файлами и массивами - C (СИ)
Формулировка задачи:
Всем доброго здоровья!
Второй день ломаю голову над задачей не могу решить.
Кому интересно прошу поучаствовать.
Задача: Из файла А.тхт скопировать данные в массив, этот массив отсортировать и отсортированные данные записать в файл В.тхт.
Проблема в том, что данные в файле А расположены в столбик, и записаться в файл В тоже должны в столбик.
Пример работы программы:
А.тхт
9
3
1
5
В.тхт
1
3
5
9
Решение задачи: «Алгоритмы. Работа с файлами и массивами»
textual
Листинг программы
int sortFile(FILE *fIn, FILE *fOut, int *mas, size_t *size)//Только массив должна быть достаточной длины { int i = 0, j = 0; while(fscanf(fIn, "%d", &mas[*size++])!=EOF) *size++; if(!feof(fIn)) { puts("Error!"); return 0; } for(i = 0 ; i < *size - 1; i++) { // сравниваем два соседних элемента. for(j = 0 ; j < *size - i - 1 ; j++) { if(mas[j] > mas[j+1]) { // если они идут в неправильном порядке, то // меняем их местами. int tmp = mas[j]; mas[j] = mas[j+1]; mas[j+1] = tmp; } } for(i = 0 ; i < *size; i++) { fprintf(fOut, "%d\n", mas[i]) } return 1; }
Объяснение кода листинга программы
- Входные данные:
fIn
- файл, из которого считываются числа (не пуст).fOut
- файл, в который записываются отсортированные числа.mas
- массив, в который считываются числа.size
- указатель на размер массиваmas
.
- Создается два указателя:
i
иj
, которые будут использоваться в цикле. - Цикл
while
считывает числа из файлаfIn
в массивmas
до тех пор, пока не достигнет конца файла. Указательsize
увеличивается на количество считанных чисел. - Если при чтении файла произошла ошибка (достигнут конец файла), выводится сообщение об ошибке и возвращается 0.
- Цикл
for
проходит по всем элементам массиваmas
, кроме последнего, и сортирует их методом пузырька. Для этого используется второй циклfor
, который проходит по всем элементам, начиная с текущего, и сравнивает их. Если текущий элемент больше следующего, они меняются местами. - Цикл
for
проходит по всем элементам массиваmas
и записывает их в файлfOut
. - Возвращается 1, если все операции выполнены успешно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д