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


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

int main() {
    // Включаем поддержку русского языка для консоли
    setlocale(LC_ALL, "");

    int n, i, j;
    FILE *file_out;

    printf("--- Программа модификации диагоналей матрицы ---\n");
    printf("Введите размер квадратной матрицы (n): ");
    
    // Считываем размер n
    if (scanf("%d", &n) != 1 || n <= 0) {
        printf("Ошибка: неверный размер матрицы.\n");
        return 1;
    }

    // 1. Динамическое выделение памяти для матрицы (для гибкости)
    int **matrix = (int **)malloc(n * sizeof(int *));
    for (i = 0; i < n; i++) {
        matrix[i] = (int *)malloc(n * sizeof(int));
    }

    // 2. Заполнение матрицы тестовыми данными (для наглядности)
    // Например, порядковыми номерами от 1 до n*n
    int count = 1;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            matrix[i][j] = count++;
        }
    }

    // 3. АЛГОРИТМ ОБНУЛЕНИЯ ДИАГОНАЛЕЙ
    printf("\nМодификация данных...\n");
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            // Условие главной диагонали: i == j
            // Условие побочной диагонали: j == (n - 1 - i)
            if (i == j || j == (n - 1 - i)) {
                matrix[i][j] = 0; // Ставим ноль
            }
        }
    }

    // 4. Открытие файла для записи результата (text.txt)
    file_out = fopen("text.txt", "w");
    if (file_out == NULL) {
        printf("Ошибка при создании файла text.txt\n");
        // Очистка памяти перед выходом
        for (i = 0; i < n; i++) free(matrix[i]);
        free(matrix);
        return 1;
    }

    // 5. Запись модифицированной матрицы в файл
    fprintf(file_out, "Матрица %d x %d с обнуленными диагоналями:\n", n, n);
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            // Записываем число с отступом (ширина 4 символа)
            fprintf(file_out, "%4d", matrix[i][j]);
        }
        // Переход на новую строку после каждой строки матрицы
        fprintf(file_out, "\n");
    }

    // 6. Очистка ресурсов и закрытие потоков
    fclose(file_out);
    
    // Освобождение динамической памяти
    for (i = 0; i < n; i++) {
        free(matrix[i]);
    }
    free(matrix);

    printf("Операция завершена успешно. Результат записан в text.txt.\n");

    return 0;
}