Неожиданный результат диагональной матрицы - PullRequest
0 голосов
/ 17 июня 2020

У меня проблема с выводом. предполагается печать диагональной матрицы. Программа должна реализовать концепцию class, constructors и destructors. Я новичок в CPP, поэтому не могу понять. Ожидаемый результат:

5 0 0 0 0 8 0 0 0 0 9 0 0 0 0 12, однако результат будет следующим:

268464541 0 0 0 0 5 0 0 0 0 8 0 0 0 0 9

Вот код cpp. Подскажите, какие логические изменения мне нужно внести.

#include <iostream>
using namespace std;

class Diagonal
{
private:
    int *A;
    int n;

public:
    Diagonal()
    {
        n = 2;
        A = new int[2];
    }
    Diagonal(int n)
    {
        this->n = n;
        A = new int[n];
    }
    ~Diagonal()
    {
        delete[] A;
    }
    void Set(int i, int j, int x);
    int Get(int i, int j);
    void Display();
};

void Diagonal::Set(int i, int j, int x)
{
    if (i == j)
        A[i - 1] = x;
}
int Diagonal::Get(int i, int j)
{
    if (i == j)
        return A[i - 1];
    else
        return 0;
}

void Diagonal::Display()
{
    int i, j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            if (i == j)
                cout << A[i - 1] << " ";
            else
                cout << "0 ";
        }
        cout << "\n";
    }
}

int main()
{
    Diagonal d(4);
    d.Set(1, 1, 1);
    d.Set(2, 2, 8);
    d.Set(3, 3, 9);
    d.Set(4, 4, 12);

    d.Display();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...