Блог для маленьких школьников и их родителей
ШколаЛа

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

Автор:
Предмет: Информатика
Уровень: студенческий

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

Ответов к вопросу: 1
  • igornovykov
    22.11.2024 | 13:35

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

Ответить на вопрос:
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
Нажимая на кнопку я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.