Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
2.28 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>

int main() {
    int n, i, j;
    int **matrix;
    double sum = 0, average;
    int count = 0;
    
    printf("Enter size of square matrix: ");
    scanf("%d", &n);
    
    // Динамическое выделение памяти
    matrix = (int**)malloc(n * sizeof(int*));
    for (i = 0; i < n; i++) {
        matrix[i] = (int*)malloc(n * sizeof(int));
    }
    
    printf("Enter matrix %dx%d:\n", n, n);
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("matrix[%d][%d] = ", i, j);
            scanf("%d", &matrix[i][j]);
        }
    }
    
    printf("\nOriginal matrix:\n");
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("%4d", matrix[i][j]);
        }
        printf("\n");
    }
    
    // Вычисление среднего арифметического диагоналей через индексацию
    for (i = 0; i < n; i++) {
        // Главная диагональ
        sum += matrix[i][i];
        count++;
        
        // Побочная диагональ (кроме центрального элемента для нечетных n)
        if (i != n - 1 - i) {
            sum += matrix[i][n - 1 - i];
            count++;
        }
    }
    
    average = sum / count;
    printf("\nAverage of diagonal elements: %.2f\n", average);
    
    // Замена диагональных элементов через указатели
    for (i = 0; i < n; i++) {
        // Главная диагональ
        int *main_ptr = &matrix[i][i];
        *main_ptr = (int)average;
        
        // Побочная диагональ
        if (i != n - 1 - i) {
            int *secondary_ptr = &matrix[i][n - 1 - i];
            *secondary_ptr = (int)average;
        }
    }
    
    printf("\nMatrix after replacing diagonals:\n");
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("%4d", matrix[i][j]);
        }
        printf("\n");
    }
    
    // Освобождение памяти
    for (i = 0; i < n; i++) {
        free(matrix[i]);
    }
    free(matrix);
    
    return 0;
}
Соседние файлы в папке Лаба4