C++

След матрицы

Найти след матрицы, след матрицы — сумма элементов главной диагонали. Размер матрицы вводит пользователь, матрицу заполнять случайными числами.

Для начала, чтобы хотя-бы представлять у себя в голове решение данной программы, давайте научимся работать с двумерными массивами в С++. На этап сложнее будет использование в программе динамических массивов.

С массивами мы разобрались, а вот каким же образом генерировать случайные числа? Перейдите по ссылке, там подробно описан этот процесс. Также можно почитать справочник по функции rand, в котором даже есть пример исходного кода.

// trace_matrix.cpp: определяет точку входа для консольного приложения.
 
#include <stdafx.h>
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
int main(int argc, char* argv[])
{
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    int number_rows,// строки
        number_columns; // столбцы
    cout << "Введите количество строк матрицы: ";
    cin >> number_rows;
    cout << "Введите количество столбцов матрицы: ";
    cin >> number_columns;
 
    // динамическое создание двумерного массива
    float **ptrarray = new float* [number_rows];
    for (int count = 0; count < number_rows; count++)
        ptrarray[count] = new float [number_columns];
 
    for (int counter_rows = 0; counter_rows < number_rows; counter_rows++)
    {
        for (int counter_columns = 0; counter_columns < number_columns; counter_columns++)
        {
            ptrarray[counter_rows][counter_columns] = rand() % 100; // заполнение массива случайными числами
            cout << setw(2) << ptrarray[counter_rows][counter_columns] << "  "; // вывод на экран двумерного массива
        }
        cout << endl;
    }
    cout << endl;
 
    int trace = 0; // след матрицы
    for (int counter_rows = 0; counter_rows < number_rows; counter_rows++)
        for (int counter_columns = 0; counter_columns < number_columns; counter_columns++)
            if (counter_rows == counter_columns)
                trace += ptrarray[counter_rows][counter_columns]; // считаем след матрицы
 
    // удаление двумерного динамического массива
    for (int count = 0; count < number_rows; count++)
        delete []ptrarray[count];
 
    cout << "След матрицы: " << trace << endl;
    system("pause");
    return 0;
}
Теги:
Матрица, массив
Добавлено: 11 Апреля 2018 09:44:04 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...