Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный пользователем массив вещественных чисел - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный пользователем массив вещественных чисел. Исходный не отсортированный массив вводится пользователем. Результат помещается в файл results.txt.
#include <stdio.h>
void QuickSort(int *a, int size);
void static(int *a, int l, int r);
 
int main(){
    int Arr[]={5,4,5,6,1};
    int size=5;
    QuickSort(Arr, size);
    for(int i=0; i<size; i++) printf("%d \t", Arr[i]);
    printf("\n");
}
 
void static qs(int *a, int l, int r){
    int i = l, j = r, t, x = a[(l+r)/2];
    do{
        for(; a[i] < x; i++);
        for(; a[j] > x; j--);
        if(i <= j){
            t = a[i];
            a[i] = a[j];
            a[j] = t;
            i++;
            j--;
        }
    }
    while(i <= j);
    if(r > i) qs(a,i,r);
    if(j > l) qs(a,l,j);
}
 
void QuickSort(int *a, int size){
    qs(a,0,size-1);
}
В методе сортировки находит также ошибку которую я не могу решить.

Решение задачи: «Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный пользователем массив вещественных чисел»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int sortfloat(const void *pa, const void *pb);
FILE *out;
 
 
int main()
{
    int size, i;
    
    printf("Введите размер массива:");
    scanf("%d", &size);
    float Arr[size];
    float temp;
    printf("Введите числа, по одному в каждой строке\n");
    for(i = 0; i < size; i++)
    {
        scanf("%f", &temp); 
        Arr[i] = temp;
    }
    out = (fopen("result.txt", "wb"));
    qsort(Arr, size, sizeof(float), sortfloat);
    for(i=0; i<size; i++) 
        fprintf(out, "%.4f \t", Arr[i]);
    fclose(out);
    return 0;
}
 
int sortfloat(const void *pa, const void *pb)
{
    float a = *(float*)pa; 
    float b = *(float *)pb;
    if(a > b)
        return 1;
    if(a < b)
        return -1;
    return 0;
}

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

  1. Подключение необходимых библиотек для работы с файлами и сортировки массивов
  2. Определение функции сортировки, которая будет использоваться в методе быстрой сортировки
  3. Запрос у пользователя размера массива
  4. Чтение введенных пользователем чисел и сохранение их в массиве
  5. Открытие файла result.txt для записи
  6. Сортировка массива методом быстрой сортировки с использованием функции qsort и функции сравнения sortfloat
  7. Запись отсортированного массива в файл result.txt
  8. Закрытие файла result.txt
  9. Возврат 0, что означает успешное выполнение программы

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


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

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

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