Classe matrice con array di puntatori a stringhe

giuliomontenero
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;
}



Risposte
apatriarca
Quale problema incontri? Non riesci a compilarlo? Lo esegui ma il risultato è sbagliato? Con quale input hai testato il tuo programma? Quale output ottieni?

giuliomontenero
risolto grazie

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.