У меня проблема с выводом. предполагается печать диагональной матрицы. Программа должна реализовать концепцию 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();
}