Пример на с++ След Матрицы



Приветствую вас дорогие пользователи, сегодня я бы хотел рассмотреть следующее задание: найти сумму элементов главной диагонали матрицы. Согласно википедии эту сумму еще называют следом матрицы:

След матрицы — это сумма элементов главной диагонали матрицы

Перед тем, как мы перейдем к нахождению следа  матрицы нам необходимо:

1. Добавляем в наш проект все необходимые библиотеки, подключаем пространство имен std, а также основную функцию без которой не обойтись – функцию main():

#include <iostream>
#include <clocale>
#include <ctime>
#include <iomanip>

using namespace std;

int main()
{
    return 0;
}
след матрицы решение задачи на c++ си плюс плюс

2. В нашей программе пользователь будет определять размерность матрицы, поэтому необходимо позаботиться об удобном вводе строк и столбцов в командной строке( используем cout и cin)

#include <iostream>
#include <clocale>
#include <ctime>
#include <iomanip>

using namespace std;

int main()
{
	setlocale(LC_CTYPE,"rus");// чтобы в консоли отображались символы русского языка
	srand(time(NULL));

	int kol_strok(0),kol_stolb(0);
	cout<<"Введите количество строк матрицы:";
	cin>>kol_strok;
	cout<<"Введите количество столбцов матрицы:";
	cin>>kol_stolb;

        return 0;
}
след матрицы решение задачи на c++ си плюс плюс

3. Следующим этапом наших действий будет задание динамического массива, который собственно будет хранить элементы матрицы. Мы будем использовать динамический массив так, как не можем заранее предугадать, какую размерность матрицы определит пользователь.

int **matr=new int *[kol_strok];
for(int i(0);i<kol_strok;i++)
    matr[i]=new int [kol_stolb];
след матрицы решение задачи на c++ си плюс плюс

4. Осталось только задать элементы матрицы и можно переходить к нахождению следа матрицы. Задавать элементы мы будем с помощью функции rand() и сразу же в том же цикле выводить их на экран.

	for(int i(0);i<kol_strok;i++)
	{
		for(int j(0);j<kol_stolb;j++)
			{
				matr[i][j]=rand()%99;
				cout<<setw(2)<<matr[i][j]<<" ";
			}
		cout<<endl;
	}
	cout<<"\n";
след матрицы решение задачи на c++ си плюс плюс

5. Объявляем переменную sled_matrix которая будет отвечать за хранение суммы элементов главной диагонали.

	int sled_matrix(0);
след матрицы решение задачи на c++ си плюс плюс

Затем:

След матрицы

Находим элементы с одинаковыми i и j и прибавляем их к переменной sled_matrix

for(int i(0);i<kol_strok;i++)
	for(int j(0);j<kol_stolb;j++)
		{
			if(i==j)sled_matrix+=matr[i][j];
		}
след матрицы решение задачи на c++ си плюс плюс

Все. Осталось только очистить память, которая была выделена на динамический массив и отобразить в консоли значение переменной sled_matrix.

for(int i(0);i<kol_strok;i++)
	delete []matr[i];

cout<<"След матрицы:"<<sled_matrix<<endl;
след матрицы решение задачи на c++ си плюс плюс

Также есть вариант решения этой задачи на языке программирования JAVA:

import java.util.Scanner;
public class Sled {
public static void main (String args[]){
Scanner scan = new Scanner(System.in);
int i,j,x,y,Sum=0;
System.out.println("Введите размерность массива");
System.out.println("Количество строк");
i=scan.nextInt();
System.out.println("Количество столбцов");
j=scan.nextInt();
int [][]a = new int[i][j];
System.out.println("Введите элементы матрицы");
for(x=0;x<i;x++){
for(y=0;y<j;y++){
System.out.print("a["+x+"]["+y+"]=");
a[x][y]=scan.nextInt();
}
}
System.out.println("");
for(x=0;x<i;x++){
System.out.print("|");
for(y=0;y<j;y++){
System.out.print(a[x][y]+" ");
}
System.out.println("|");
}
for(x=0;x<i;x++){
for(y=0;y<j;y++){
if(x==y){
Sum=Sum+a[x][y];
}
}

}
System.out.println("");
System.out.println("Сумма главной диагонали матрицы "+Sum);
}
}
Пример на с++ След Матрицы
Пожалуйста оцените качество материала

Помогая проекту BEST-EXAM, вы делаете образование более доступным для каждого человека, внесите и вы свой вклад -
поделитесь этой статьей в социальных сетях!
кнопка вверх картинка