Как заполнить квадратную матрицу таблицей умножения С++

Как заполнить квадратную матрицу табличкой умножения? Чтоб когда она выводится в консоль это выглядело как квадратная таблица умножения.


Ответы (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];        
}
→ Ссылка