Как заполнить квадратную матрицу таблицей умножения С++
Как заполнить квадратную матрицу табличкой умножения? Чтоб когда она выводится в консоль это выглядело как квадратная таблица умножения.
Ответы (2 шт):
Автор решения: becouse
→ Ссылка
Таблица умножения
#include <iostream>
#include <iomanip>
using namespace std;
// Вывод заголовка
void printHeader(int start, int end) {
// Заголовки столбцов
cout << setw(4) << " ";
for (int firstrow = start; firstrow <= end; firstrow++) {
cout << setw(3) << firstrow << " ";
}
cout << endl;
// линия из -
cout << setw(4) << " ";
for (int secondrow = start; secondrow <= end; secondrow++) {
cout << "----";
}
cout << endl;
}
int main() {
int start=2;
int end=10;
//цикл
for (int i = start; i <= end; i++) {
// Заголовок
if (i == start) {
printHeader(start, end);
}
// Колонки
for (int j = start; j <= end; j++) {
// Заголовок строки
if (j == start) {
cout << setw(3)<< i << "|";
}
// Уножение
cout << setw(3) << (i * j) << " ";
}
// Конец ряда
cout << endl;
}
return 0;
}
Автор решения: AR Hovsepyan
→ Ссылка
constexpr int n = 9;
//инициализация первой строки
int M[n][n] = { { 1, 2, 3, 4, 5, 6, 7, 8, 9} };
//установим флаг вывода для выравнивания справа
cout.setf(ios_base::right);
//выводим первую строку
cout << "\n *";
for (int i = 1; i < n; ++i)
cout << setw(4) << M[0][i];
cout << endl;
//инициализация и вывод остальных строк
for (int i = 1; i < n; ++i) {
M[i][0] = i + 1;
cout << '\n' << setw(4) << M[i][0];
for (int j = 1; j < n; ++j) {
M[i][j] = M[i][0] * M[0][j];
cout << setw(4) << M[i][j];
}
cout << endl;
}
А если ответить конкретнее по вопросу(как заполнить матрицу), то можно и поэффективней:
constexpr int n = 9;
//инициализация первой строки
int M[n][n] = { { 1, 2, 3, 4, 5, 6, 7, 8, 9} };
for (int i = 1; i < n; ++i) {
M[i][0] = i + 1; //инициализация первого столюца
for (int j = i; j < n; ++j)
M[i][j] = M[j][i] = M[i][0] * M[0][j];
}