Поменять в нём местами максимальный и минимальный элементы в файле - C (СИ)
Формулировка задачи:
Дан файл вещественных чисел. Поменять в нём местами максимальный и минимальный элементы.
Вот что у меня получилось:
#include <conio.h> #include <stdio.h> using namespace std; int main() { int t, max, min = 0; int i,j = 10; float a[10]; FILE *file; file = fopen("C:\\1.txt", "r"); fscanf(file, "%f", &a[i]); for(int i = 0; i < 10; i++) { if(a[i] > a[min]) min = i; if(a[i] < a[max]) min = i; } t = a[max]; a[max] = a[min]; a[min] = t; for (i=0; i<10; i++) fprintf(file, "%f", a[i]); fclose(file); getch(); return 0; }
Решение задачи: «Поменять в нём местами максимальный и минимальный элементы в файле»
textual
Листинг программы
//#include <conio.h> #include <stdio.h> int main() { float t; int max, min; int i; float a[10]; FILE *file; file = fopen("1.txt", "r"); for(i=0; i<10; i++) fscanf(file, "%f", &a[i]); fclose(file); file = fopen("1.txt", "w"); min=max=0; for(i = 1; i < 10; i++) { if(a[i] < a[min]) min = i; if(a[i] > a[max]) min = i; } t = a[max]; a[max] = a[min]; a[min] = t; for (i=0; i<10; i++) fprintf(file, "%1.0f", a[i]); // ключевая строчка в выводе(не забываем про точность ;) ) fclose(file); //getch(); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
t
- для временного хранения максимального элементаmax
иmin
- для хранения индексов минимального и максимального элементовi
- для циклаa
- массив для хранения десяти чиселfile
- для работы с файлом
- Открывается файл
1.txt
на чтение. - Десять чисел считываются в массив
a
. - Файл закрывается.
- Файл открывается на запись.
- Индексы минимального и максимального элементов обнуляются.
- Цикл считывает остальные числа и сравнивает их с уже имеющимися минимальным и максимальным. Если текущее число меньше (или больше) минимального (или максимального), то обновляются соответствующие индексы.
- Максимальное число записывается в переменную
t
, а минимальное - на место максимального, и наоборот. - Цикл записывает все числа из массива в файл.
- Файл закрывается.
- В конце программы возвращается 0, чтобы программа завершилась. Этот код меняет местами минимальный и максимальный элементы в массиве, но оставляет их в том же порядке, что и в исходном файле. Если в исходном файле числа: 9, 1, 2, 3, 4, 5, 6, 7, 8, 0, то после выполнения программы числа в файле станут: 9, 0, 2, 3, 4, 5, 6, 7, 8, 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д