Дана матрица X(m,m). Запомнить в массиве Z положительные элементы главной диагонали написать программу на c++

Ответы

Ответ дал: CSharper
0

#include <iostream>

#include <ctime>


using namespace std;


int** get_matrix(int rows,int columns) //Создание матрицы

{

int** matrix = new int*[rows];

for(int i = 0;i<rows;i++)

{

matrix[i] = new int[columns];

}

return matrix;

}

void fill_matrix(int** matrix, int rows,int columns, int min = -100, int max = 200)//Заполнение матрицы случайными значениями в заданном диапазоне

{

srand(time(NULL));

for(int i = 0;i<rows;i++)

{

for(int j = 0;j<columns;j++)

{

matrix[i][j] = rand() % max + min;

}

}

}


int get_count_of_positive_numbers(int** matrix, int rows, int columns)

{

int count = 0;

for(int i = 0;i<rows;i++)

{

for(int j = 0;j<columns;j++)

{

if(i == j && matrix[i][j] > 0)

count++;

}

}

return count;

}


int *get_array_of_positive_numbers(int** matrix, int rows,int columns,int count)

{

int *array = new int[count];

int x = 0;

for(int i = 0;i<rows;i++)

{

for(int j = 0;j<columns;j++)

{

if(i == j && matrix[i][j] > 0)

array[x++] = matrix[i][j];

}

}

return array;

}


int main(int argc, char** argv) {

int rows = 5;

int columns = 5;

int** matrix = get_matrix(rows,columns);//Создаем матрицу

fill_matrix(matrix,rows,columns);//Заполняем ее случайными значениями

for(int i = 0;i<rows;i++)

{

for(int j = 0;j<columns;j++)

{

cout << matrix[i][j] << "t";

}

cout<<endl;

}

int count_of_positive_numbers = get_count_of_positive_numbers(matrix,rows,columns); //Получаем количество положительных элементов в главной диагонали

int* positive_numbers = get_array_of_positive_numbers(matrix,rows,columns,count_of_positive_numbers);//Получаем массив с этими элементами

for(int i = 0;i<count_of_positive_numbers;i++)

{

cout << positive_numbers[i] <<"t";

}

//Очищение памяти

for(int i = 0;i<rows;i++)

{

delete[]matrix[i];

}

delete[]matrix;

delete[]positive_numbers;

return 0;

}


Вас заинтересует