class Vector {
protected:
unsigned int dim;
float *a;
public:
Vector() {
a = NULL;
dim = 0;
}
Vector(const unsigned int& x) {
dim = x;
a = new float[dim];
for (unsigned int index = 0; index < x; index++) {
cin >> a[index];
}
}
Vector(const float *init, const unsigned int& size) {
if (init) {
dim = size;
a = new float[size];
for (unsigned int index = 0; index < size; index++) {
a[index] = init[index];
}
}
}
void initVector(const float *init, const unsigned int& size) {
if (init) {
dim = size;
a = new float[size];
for (unsigned int index = 0; index < size; index++) {
a[index] = init[index];
}
}
}
void initVector(const unsigned int& size) {
dim = size;
a = new float[dim];
for (unsigned int index = 0; index < size; index++) {
cin >> a[index];
}
}
unsigned int getDim() {
return dim;
}
float operator[](unsigned int pos) {
return a[pos];
}
~Vector() {
delete[] a;
}
friend class Matrice;
friend istream& operator>>(istream&, Vector&);
};
class Matrice {
protected:
Vector *v;
public:
Matrice() {
v = NULL;
}
Vector operator[](int pos) {
return v[pos];
}
friend istream& operator>>(istream&, Matrice&);
};
class Matrice_oarecare : public Matrice
{
protected:
unsigned int linii;
public:
Matrice_oarecare() {
linii = 0;
}
Matrice_oarecare(int coloane, int linii) {
this->linii = linii;
v = new Vector[linii];
for ( int index = 0; index < linii; index++) {
cin >> v[index]; //Asta apeleaza >> pentru Vector, care citeste toate numerele din sir
}
}
friend istream& operator>>(istream& in, Matrice_oarecare&a);
friend ostream& operator<<(ostream& out, Matrice_oarecare&a);
};
class Matrice_patratica : public Matrice {
unsigned int dim;
public:
Matrice_patratica() {
v = NULL;
dim = 0;
}
Matrice_patratica(unsigned int dim) {
this->dim = dim;
v = new Vector[dim];
for (unsigned int index = 0; index < dim; index++) {
float *init = new float[dim];
for (unsigned index2 = 0; index2 < dim; index2++)
cin >> init[index];
v[index].initVector(init, dim);
}
}
friend ostream& operator<<(ostream&, Matrice_patratica&);
};
istream& operator>>(istream& in, Vector& v) {
in >> v.dim;
v.a = new float[v.dim];
for (unsigned int i = 0; i < v.dim; i++)
in >> v.a[i];
return in;
}
ostream& operator<<(ostream& os, Matrice_oarecare& a) {
for (unsigned indexI = 0; indexI < a.v->getDim(); indexI++) {
for (unsigned indexJ = 0; indexJ < a.linii; indexJ++) {
os << a[indexI][indexJ];
}
}
return os;
}
ostream& operator<<(ostream& os, Matrice_patratica& a) {
for (unsigned indexI = 0; indexI < a.dim; indexI++) {
for (unsigned indexJ = 0; indexJ < a.dim; indexJ++) {
os << a[indexI][indexJ];
}
}
return os;
}
int main() {
Matrice_oarecare c(2,2);
cout << c << endl;
return 0;
}
У меня возникли проблемы при попытке динамического выделения матрицы.Что бы я ни писал, он возвращает что-то вроде '21 .3244141e-48198' и спрашивает почему.Я думаю, что проблема может быть либо перегруженным оператором <<, либо одним наследованием.Matrice_oarecare и Matrice_patratica должны наследовать класс Matrice, и я должен создать их, используя класс Vector. </p>