Найти среднее арифметическое элементов главной диагонали - C (СИ)
Формулировка задачи:
Дана целочисленная матрица размером . Найти:
а) среднее арифметическое элементов главной диагонали;
б) произведение элементов побочной диагонали;
в) максимальный элемент строки и минимальный элемент столбца, а также разницу между ними
Решение задачи: «Найти среднее арифметическое элементов главной диагонали»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int n;// вводим размер
printf("Write n:\n");
scanf("%d", &n);
int **a = (int **)calloc(n, sizeof(int *));// создаём матрицу
for(int i=0;i<n;i++)
a[i] = (int *)calloc(n, sizeof(int));
printf("Write elements of array:\n");// вводим элементы матрицы
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d", &a[i][j]);
double s = 0.0;
double p = 1.0;
for(int i=0;i<n;i++){
s += (double)a[i][i];
p *= (double)a[i][n-1-i];
}
s /= (double) n;
printf("a) %lf\nb) %lf\nc)\n", s, p);
for(int i=0;i<n;i++){
int min = a[0][i], max = a[i][0];
for(int j=1;j<n;j++){
if(min > a[j][i])
min = a[j][i];
if(max < a[i][j])
max = a[i][j];
}
printf(" in %d-th column: min = %d, in %d-th row max = %d, there: (max-min)= %d \n", i+1, min, i+1, max, max-min);
}
return 0;
}
Объяснение кода листинга программы
- Ввод размера матрицы
- Выделение памяти под матрицу
- Ввод элементов матрицы
- Инициализация переменных для хранения суммы и произведения
- Суммирование элементов главной диагонали и произведение элементов побочной диагонали
- Вычисление среднего арифметического элементов главной диагонали
- Вывод среднего арифметического элементов главной диагонали
- Вывод произведения элементов побочной диагонали
- Вывод минимального элемента в i-той колонке
- Вывод максимального элемента в i-й строке
- Вывод разности максимального и минимального элементов в i-й колонке