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


#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;

    printf("Выберите способ ввода:\n");

    printf("1 - Ручной ввод\n");

    printf("2 - Генерация случайных чисел\n");

    printf("3 - Чтение из файла\n");

    printf("Выбор: ");

    scanf("%d", &choice);

    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);

            return 1;

        }

        for (int i = 0; i < mySize; i++) {

            fscanf(file, "%d", &myArray[i]);

        }

        fclose(file);

    }

    else {

        printf("Неверный выбор!\n");

        free(myArray);

        return 1;

    }

    printf("\nВаш набор данных:\n");

    printArray(myArray, mySize);

    shakerSort(myArray, mySize);

    printf("После сортировки:\n");

    printArray(myArray, mySize);

    free(myArray);

    printf("\nСлучайный набор данных:\n");

    int size = 10;

    int randomArray[10];

    for (int i = 0; i < size; i++) {

        randomArray[i] = rand() % 100;

    }

    printArray(randomArray, size);

    shakerSort(randomArray, size);

    printf("После сортировки:\n");

    printArray(randomArray, size);

    return 0;

}