Сортировки в файле (метод сортировки выбирается пользователем) - C (СИ)

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

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

помогите пожалуйста соединить 3 сортировки , что бы они проходили в файле. и перед началом можно было выбрать каким способом будет сортировка. например 1- первый способ, 2-второй способ, 3- третий способ.
void selectSort(int* arr, int size) 
{
    int tmp, i, j, pos;
    for(i = 0; i < size; ++i) // i - номер текущего шага
    { 
        pos = i; 
        tmp = arr[i];
        for(j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента
        {
            if (arr[j] < tmp) 
            {
               pos = j; 
               tmp = arr[j]; 
            }
        }
        arr[pos] = arr[i]; 
        arr[i] = tmp; // меняем местами наименьший с a[i]
    }
}void selectSort(int* arr, int size) 
{
    int tmp, i, j, pos;
    for(i = 0; i < size; ++i) // i - номер текущего шага
    { 
        pos = i; 
        tmp = arr[i];
        for(j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента
        {
            if (arr[j] < tmp) 
            {
               pos = j; 
               tmp = arr[j]; 
            }
        }
        arr[pos] = arr[i]; 
        arr[i] = tmp; // меняем местами наименьший с a[i]
    }
}  ---сортировка выбором

void bubbleSort(int* arr, int size)
{
    int tmp, i, j;
 
    for(i = 0; i < size - 1; ++i) // i - номер прохода
    {            
        for(j = 0; j < size - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
}----сортировка пузырьком

void insertSort(int* a, int size) 
{
    int i, j, tmp;
    for (i = 1; i < size; ++i) // цикл проходов, i - номер прохода
    {
        tmp = a[i]; 
        for (j = i - 1; j >= 0 && a[j] > tmp; --j) // поиск места элемента в готовой последовательности 
            a[j + 1] = a[j];    // сдвигаем элемент направо, пока не дошли
        a[j + 1] = tmp; // место найдено, вставить элемент    
    }
}----сортировка вставками

Решение задачи: «Сортировки в файле (метод сортировки выбирается пользователем)»

textual
Листинг программы
#include <stdio.h> 
#include <stdlib.h>
#include <time.h> 
 
//enum sorts {SELECTION_SORT
//        , BUBBLE_SORT
//        , INSERTION_SORT};
 
void print_arr(int *arr, size_t size)
{
    for (size_t i = 0; i<size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}
int main(int argc, char **argv) 
{ 
    int *arr = NULL;
    int sortNo;
    FILE *file;
    if (argc < 3) {
        printf("Error argument file name\n");
        return -1; 
    }  
    file = fopen(argv[1], "r");
    if (file == 0) {
        printf("Error open file: %s\n", argv[1]);
        return -1;
    }
    int size = 0, val = 0;
    while (fscanf(file, "%d", &val)==1) {
        arr = realloc((!size) ? NULL : arr, sizeof(int) *(size + 1));
        if (arr == NULL) {
            printf("Error realloc\n");
            return -1;
        }
        arr[size++] = val;
    }
    fclose(file);
    print_arr(arr, size);
 
    printf("Input number[0-2]: ");
    scanf("%d", &sortNo);
    switch(sortNo) {
        case 0:
            //selection_sort(arr, size); // сюда вашу функцию сортировки
            break;
        case 1:
            //bubble_sort(arr, size);    // и сюда
           break;
        case 2:
            //insertion_sort(arr, size); // и сюда
            break;
        default:
            puts("Error!\n");
            break;
    }
    file = fopen(argv[2], "w");
    if (file == 0) {
        printf("Error open file: %s\n", argv[2]);
        return -1;
    }   
    for (int i = 0; i<size; i++)
        fprintf(file, "%d ", arr[i]);
    fclose(file);
    free(arr);
    return 0; 
}

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


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

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

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