Поменять в нём местами максимальный и минимальный элементы в файле - 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.