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


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int n;
    int a[100];
    int choice;

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

    printf("Введите количество элементов массива:\n");
    printf("n = ");
    scanf("%d", &n);

    if (choice == 1)
    {
        printf("Введите элементы массива:\n");
        for (int i = 0; i < n; i++)
        {
            printf("a[%d] = ", i);
            scanf("%d", &a[i]);
        }
    }
    else if (choice == 2)
    {
        int min, max;
        printf("Минимальное значение: ");
        scanf("%d", &min);
        printf("Максимальное значение: ");
        scanf("%d", &max);
        srand(time(NULL));
        int count = 0;
        while (count < n)
        {
            int num = min + rand() % (max - min + 1);
            int found = 0;
            for (int k = 0; k < count; k++)
            {
                if (a[k] == num)
                {
                    found = 1;
                    break;
                }
            }
            if (!found)
            {
                a[count] = num;
                count++;
            }
        }
        printf("Сгенерированный массив:\n");
        for (int i = 0; i < n; i++)
            printf("%d ", a[i]);
        printf("\n");
    }
    else if (choice == 3)
    {
        FILE * file;
        file = fopen("/home/user/projects/result.txt", "r");
        if (file == NULL)
        {
            printf("Ошибка: не удалось открыть файл\n");
            return 1;
        }
        fscanf(file, "Отсортированный по возрастанию массив из %d элементов:\n", &n);
        for (int i = 0; i < n; i++)
            fscanf(file, "%d", &a[i]);
        fclose(file);
        printf("Массив из файла:\n");
        for (int i = 0; i < n; i++)
            printf("%d ", a[i]);
        printf("\n");
    }

    for (int i = 1; i < n; i++)
    {
        int key = a[i];
        int j = i - 1;
        while (j >= 0 && a[j] > key)
        {
            a[j + 1] = a[j];
            j = j - 1;
        }
        a[j + 1] = key;
    }

    printf("Отсортированный массив:\n");
    for (int i = 0; i < n; i++)
        printf("%d ", a[i]);
    printf("\n");

    FILE * file;
    file = fopen("/home/user/projects/result.txt", "w");
    fprintf(file, "Отсортированный по возрастанию массив из %d элементов:\n", n);
    for (int i = 0; i < n; i++)
        fprintf(file, "%d ", a[i]);
    fprintf(file, "\n");
    fclose(file);

    printf("Результат выполнения программы записан в файл /home/user/projects/result.txt\n");
    return 0;
}