L'esercizio grosso modo diceva :
creare una classe matrice con un array a puntatori di stringhe da acquisire in input; come funzioni bisognava creare una per l'acquisizione dei valori e se l'utente inseriva il "-" alla cella dell'array si assegnava NULL, una per la stampa dei valori della martice e se una qualsiasi delle celle della matrice aveva NULL come valore si andava a stampare il "-"; una per la trasposta della matrice (dove nella stessa funzione ho messo la stampa direttamente)
dov'è che sbaglio ragazzi? vorrei capire qualcosa
#include<iostream>
#include<string>
using namespace std;
const int N=3;
class Matrix
{
public:
Matrix();
void inserisci(string* data, int r, int c);
void stampa() const;
void trasposta();
private:
string* array[N][N];
};
Matrix::Matrix()
{
for(int i=0; i<N; i++)
for(int k=0; k<N; k++)
array[i][k]=NULL;
}
void Matrix::inserisci(string* data, int r, int c)
{
if(*data=="-")
array[r][c]=NULL;
else
array[r][c]=data;
}
void Matrix::stampa() const
{
for(int r=0; r<N; r++)
{
for(int c=0; c<N; c++)
{
if(array[r][c]!=NULL)
cout<<*array[r][c]<<" ";
else
cout<<"- ";
}
cout<<endl;
}
}
void Matrix::trasposta()
{
string* temp[N][N];
for(int r=0; r<N; r++)
{
for(int c=0; c<N; c++)
{
if(array[r][c]!=NULL)
temp[c][r]=array[r][c];
else
*temp[c][r]="-";
}
}
for(int r=0; r<N; r++)
{
for(int c=0; c<N; c++)
{
if(temp[r][c]!=NULL)
cout<<*temp[r][c]<<" ";
else
cout<<"-"<<" ";
}
cout<<endl;
}
}
int main()
{
Matrix mat;
string* value;
for(int r=0; r<N; r++)
{
for(int c=0; c<N; c++)
{
value=new string;
cout<<"Inserire il valore della cella "<<r<<","<<c<<" : ";
cin>>*value;
mat.inserisci(value,r,c);
}
}
cout<<"Matrice: "<<endl;
mat.stampa();
cout<<"Matrice trasposta: "<<endl;
mat.trasposta();
return 0;
}