Матрица, главные диагонали
Заполнить матрицу A размерности n*m случайными числами. Переписать в массив B элементы aii первой главной диагонали матрицы A, в массив C - элементы другой главной диагонали матрицы A. Полученные массивы вывести на экран в виде таблицы из трех колонок.
Если захотите сделать программу более изящной воспользуйтесь статьей — динамические массивы. В конце программы не забываем освобождать память под выделенные массивы.
// matrix_a.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char* argv[])
{
srand(time(0)); // генерация случайных чисел
cout << "Enter the number of rows: "; // введите количество строк
int rows_number = 0;
cin >> rows_number;
cout << "Enter the number of columns: "; // введите количество столбцов
int columns_number = 0;
cin >> columns_number;
// динамическое создание двумерного массива вещественных чисел на десять элементов
int **ptrarray_a = new int* [rows_number]; // строки в массиве
for (int count = 0; count < rows_number; count++)
ptrarray_a[count] = new int [columns_number]; // столбцы
// заполнение массива
for (int count_row = 0; count_row < rows_number; count_row++)
for (int count_column = 0; count_column < columns_number; count_column++)
ptrarray_a[count_row][count_column] = rand() % 10 + 1; //заполнение массива случайными числами с масштабированием от 1 до 10
for (int count_row = 0; count_row < rows_number; count_row++)
{
for (int count_column = 0; count_column < columns_number; count_column++)
cout << setw(2) << ptrarray_a[count_row][count_column] << " "; //вывод массива
cout << endl;
}
int b_size_array =0; // переменная хранящая размер массивов B и С
rows_number < columns_number ? b_size_array = rows_number : b_size_array = columns_number; // определяем размер одномерных массиво В и С
int *ptrarray_b = new int [b_size_array];
int *ptrarray_c = new int [b_size_array];
for (int counter = 0; counter < b_size_array; counter++)
{
ptrarray_b[counter] = ptrarray_a[counter][counter];// переписать в массив B элементы aii главной диагонали матрицы A
ptrarray_c[counter] = ptrarray_a[counter][b_size_array - 1 - counter]; // переписать в массив C элементы второй главной диагонали матрицы A
}
// вывод трёх столбцов
cout << endl;
int count_column_a = 0, count_rows_b = 0, out_counter= 0; // вспомогательные переменны для вывода
for (int count_row = 0; count_row < (columns_number*rows_number); count_row++)
{
cout << setw(4) << ptrarray_a[count_rows_b][count_column_a] << " ";
count_column_a++;
if (count_column_a == columns_number)
{
count_column_a = 0;
count_rows_b++;
}
if (out_counter <= (b_size_array - 1))
{
cout << ptrarray_b[count_row] << " " << setw(4) << ptrarray_c[count_row] << " ";
out_counter++;
}
cout << endl;
}
delete [] ptrarray_b; // высвобождение памяти массива B
delete [] ptrarray_c; // высвобождение памяти массива C
// удаление двумерного динамического массива
for (int count = 0; count < 2; count++)
delete []ptrarray_a[count];
system("pause");
return 0;
}
Итак, программа генерирует случайные числа в диапазоне [1;10] и заполняет ими двумерный массив, после чего выводит его на экран. Массивы B и С заполняются элементами главных диагоналей, после этого все три массива выводятся на экран в три столбца (см. Рисунок 1). Все используемые в программе массивы объявлены динамически, что соответствует хорошему тону программирования.
Комментарии:
Нету комментариев для вывода...