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

Объяснение кода листинга программы

В этом коде:

  1. Объявлены переменные:
    • t - для временного хранения максимального элемента
    • max и min - для хранения индексов минимального и максимального элементов
    • i - для цикла
    • a - массив для хранения десяти чисел
    • file - для работы с файлом
  2. Открывается файл 1.txt на чтение.
  3. Десять чисел считываются в массив a.
  4. Файл закрывается.
  5. Файл открывается на запись.
  6. Индексы минимального и максимального элементов обнуляются.
  7. Цикл считывает остальные числа и сравнивает их с уже имеющимися минимальным и максимальным. Если текущее число меньше (или больше) минимального (или максимального), то обновляются соответствующие индексы.
  8. Максимальное число записывается в переменную t, а минимальное - на место максимального, и наоборот.
  9. Цикл записывает все числа из массива в файл.
  10. Файл закрывается.
  11. В конце программы возвращается 0, чтобы программа завершилась. Этот код меняет местами минимальный и максимальный элементы в массиве, но оставляет их в том же порядке, что и в исходном файле. Если в исходном файле числа: 9, 1, 2, 3, 4, 5, 6, 7, 8, 0, то после выполнения программы числа в файле станут: 9, 0, 2, 3, 4, 5, 6, 7, 8, 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы