task22

mail@pastecode.io avatar
unknown
c_cpp
7 months ago
1.7 kB
3
Indexable
Never
#include <iostream>
#include <locale.h>

double** allocateMemSq(int n) {
	double** a = new double*[n];
	for (int i = 0; i < n; i++) {
		a[i] = new double[n];
	}
	return a;
}
void deleteMem(double** a, int n) {
	for (int i = 0; i < n; i++) {
		delete[] a[i];
	}
	delete[] a;
}

double sumMainDiag(double** a, int n) {
	double sum = 0;
	for (int i = 0; i < n; i++) {
		sum += a[i][i];
	}
	return sum;
} 

double sumSideDiag(double** a, int n) {
	double sum = 0;
	for (int i = 0; i < n; i++) {
		sum += a[i][n-i-1];
	}
	return sum;
}

double sumAboveDiag(double** a, int n) {
	double sum = 0;
	for (int i = 0; i < n; i++) {
		for (int j = i + 1; j < n; j++) {
			sum += a[i][j];
		}
	}
	return sum;
}

double sumBelowDiag(double** a, int n) {
	double sum = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < i; j++) {
			sum += a[i][j];
		}
	}
	return sum;
}
int main() {
	setlocale(LC_ALL, "");
	int n;
	printf("Введите порядок матрицы: ");
	scanf_s("%d", &n);
	double** arr = allocateMemSq(n);
	printf("Введите элементы матрицы:\n");
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			scanf_s("%lf", &arr[i][j]);
		}
	}
	printf("Сумма элементов на главной диагонали: %lf\nСумма элементов на побочной диагонали: %lf\nСумма элементов над главной диагональю: %lf\nСумма элементов под главной диагональю: %lf\n", 
															sumMainDiag(arr,n),
														    sumSideDiag(arr, n), 
														    sumAboveDiag(arr, n), 
														    sumBelowDiag(arr,n));
	deleteMem(arr, n);
}
Leave a Comment