| Код | #include <stdio.h> #include <stdlib.h> #include <time.h> void fillDesc(int size, int * array); void fillAsc(int size, int * array); void fillRand(int size, int * array);
void sortBubble(int size, int * array); void sortInsertion(int size, int * array); void sortSelection(int size, int * array); void MergingSort(int size, int * array); void displayArray(int size, int * array);
int main() { int size = 0, item = 0; int * array;
printf("Input size array: "); /*Просьба ввести размер массива*/ scanf("%i", &size); /*Вводим размер массива*/
array = malloc(size * sizeof(int)); /* Функция malloc - возвращает указатель на первый байт области памяти размером size, которая была выделена из динамически распределяемой области памяти*/
while(!item) { printf("\nFill array:\n"); /*Заполним массив отдним из способов*/ printf("1 - Descending order\n"); /*По убыванию*/ printf("2 - In ascending\n"); /*По возрастанию*/ printf("3 - Random\n"); /*Случайными числами*/ printf("Enter the item number... "); /*Введите номер элемента*/ scanf("%i", &item); /*Вводим как мы хотим заполнить массив*/
switch(item) /* Взависимости какой способ мы выбрали switch выполняет переход на ту или иную метку*/ { case 1: fillDesc(size, array); break; /*А операторы case определяют эти самые метки, в данном случае по убыванию*/ case 2: fillAsc(size, array); break; /*По возрастанию*/ case 3: fillRand(size, array); break; /*Случайными числами*/ default : printf("\n Invalid item\n"); item = 0; break; /*Проверка соответствия введенному значению*/ } }
displayArray(size, array); /*Выводим на экран размер и массив с выбраным заполнением*/
item = 0; while(!item) { printf("\n\nSorting array:\n"); /* Сортирвка массива*/ printf("1 - Buble sort\n"); /* Пузырьковая. */ printf("2 - Insertion sort\n"); /*Сортировка вставкой..*/ printf("3 - Selection sort\n"); /*Сортировка выбором.*/ printf("4 - MergingSort\n"); /*Сортировка слиянием*/ printf("Enter the item number..."); /*Введите номер элемента*/ scanf("%i", &item);
switch(item) /* Взависимости какой способ мы выбрали switch выполняет переход на ту или иную метку*/ { case 1: sortBubble(size, array); break; /*пузырьковая сортировка*/ case 2: sortInsertion(size, array); break; /*сортировка вставкой*/ case 3: sortSelection(size, array); break; /*сортировка выбором*/ case 4: MergingSort(size, array); break; /*сортировка слиянием*/ default : printf("\n Invalid item\n"); item = 0; break; /*Проверка соответствия веденному значению*/ } }
displayArray(size, array);
free(array);
return 0; }
void fillDesc(int size, int * array) /*Метод заполнения по убыванию*/ { int i; for(i = 0; i < size; i++) array[i] = size - i - 1; }
void fillAsc(int size, int * array) /*Метод заполнения по возрастанию*/ { int i; for(i = 0; i < size; i++) array[i] = i; }
void fillRand(int size, int * array) /*Метод заполнения случайными числами*/ { srand(time(NULL));
int i; for(i = 0; i < size; i++) array[i] = rand()%100; }
void sortBubble(int size, int * array) /*Метод сортировки пузырьком*/ { int i, j, tmp; for(i = 0; i < size - 1; i++) { for(j = 0; j < size - i - 1; j++) { if(array[j] > array[j + 1]) { tmp = array[j]; array[j] = array[j + 1]; array[j + 1] = tmp; } } } }
void sortInsertion(int size, int * array) /*Метод сортировки вставкой*/ { int i, j, tmp; for (i = 1; i < size; i++) { tmp = array[i];
j = i - 1; while(j >= 0 && array[j] > tmp) { array[j + 1] = array[j]; j--; }
array[j + 1] = tmp; } }
void sortSelection(int size, int * array) /*Метод сортировки выбором*/ { int i, j, min, tmp; for (i = 0; i < size - 1; i++) { min = i;
for(j = i + 1; j < size; j++) { if(array[j] < array[min]) min = j; } if(min != i) { tmp = array[i]; array[i] = array[min]; array[min] = tmp; } } } void MergingSort(int size, int * array) /*Метод сортровки слиянием */ { int i, j, k, t, s, min, min2; int * tmp = new int[size]; k = 1; while (k < size){ t = 0; s = 0; while (t+k < size){ min = t+k; min2 = (t+2*k < size ? t+2*k : size); i = t; j = min; for ( ; i < min && j < min2 ; s++){ if (array[i] < array[j]) { tmp[s] = array[i]; i++; } else { tmp[s] = array[j]; j++; } } for ( ; i < min; i++, s++) tmp[s] = array[i]; for ( ; j < min2; j++, s++) tmp[s] = array[j]; t = min2; } k *= 2; for (s = 0; s < t; s++) array[s] = tmp[s]; } delete(tmp); }
void displayArray(int size, int * array) { int i; printf("\nArray: "); for(i = 0; i < size; i++) printf("%i ", array[i]); }
|
Код вызывает такие ошибки. В чем может быть проблема?

|