Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С (для ИВТ) / Готовые лабы С / Лаба4 / Laba 4 (4)
.c#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
