Загрузка данных


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>

void shakerSort(int* arr, int size) {
    int left = 0;
    int right = size - 1;
    while (left < right) {
        for (int i = left; i < right; i++) {
            if (arr[i] > arr[i + 1]) {
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
        right--;
        for (int i = right; i > left; i--) {
            if (arr[i - 1] > arr[i]) {
                int temp = arr[i];
                arr[i] = arr[i - 1];
                arr[i - 1] = temp;
            }
        }
        left++;
    }
}

void printArray(int* arr, int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    int choice;

    do {
        printf("Выберите способ ввода:\n");
        printf("1 - Ручной ввод\n");
        printf("2 - Генерация случайных чисел\n");
        printf("3 - Чтение из файла\n");
        printf("0 - Выход\n");
        printf("Выбор: ");
        scanf("%d", &choice);

        if (choice == 0) {
            printf("Завершение работы программы.\n");
            break;
        }

        int mySize;
        printf("Введите количество элементов: ");
        scanf("%d", &mySize);
        int* myArray = (int*)malloc(mySize * sizeof(int));
        if (choice == 1) {
            printf("Введите элементы через пробел:\n");
            for (int i = 0; i < mySize; i++) {
                scanf("%d", &myArray[i]);
            }
        }
        else if (choice == 2) {
            for (int i = 0; i < mySize; i++) {
                myArray[i] = rand() % 100;
            }
            printf("Сгенерированный массив:\n");
            printArray(myArray, mySize);
        }
        else if (choice == 3) {
            char filename[100];
            printf("Введите имя файла: ");
            scanf("%s", filename);
            FILE* file = fopen(filename, "r");
            if (file == NULL) {
                printf("Ошибка открытия файла!\n");
                free(myArray);
                continue;
            }
            for (int i = 0; i < mySize; i++) {
                fscanf(file, "%d", &myArray[i]);
            }
            fclose(file);
        }
        else {
            printf("Неверный выбор!\n");
            free(myArray);
            continue;
        }

        printf("\nВаш набор данных:\n");
        printArray(myArray, mySize);
        shakerSort(myArray, mySize);
        printf("После сортировки:\n");
        printArray(myArray, mySize);
        printf("\n");
        free(myArray);

    } while (1);

    return 0;
}