Найти след матрицы, след матрицы — сумма элементов главной диагонали. Размер матрицы вводит пользователь, матрицу заполнять случайными числами.
Для начала, чтобы хотя-бы представлять у себя в голове решение данной программы, давайте научимся работать с двумерными массивами в С++. На этап сложнее будет использование в программе динамических массивов.
С массивами мы разобрались, а вот каким же образом генерировать случайные числа? Перейдите по ссылке, там подробно описан этот процесс. Также можно почитать справочник по функции 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; }
Результат:
CppStudio.com
Введите количество строк матрицы: 5 Введите количество столбцов матрицы: 5 61 16 39 79 99 66 42 71 5 68 80 64 34 12 44 63 64 40 21 3 17 31 99 41 72 След матрицы: 230
Комментарии
odto11
fishb0ne
Mikhail Sergeev
colt
Гараздо более простое решение без массивов и указателей: