profile
Опубликовано 6 лет назад по предмету Информатика от nikita11z

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

  1. Ответ
    Ответ дан CSharper

    #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;

    }


Самые новые вопросы