Oppure

Loading
06/09/12 16:45
bulma
Salve a tutti sono nuova nel forum.. e sn alle prime armi con c++ e le liste... dovrei fare un programmino ke prenda da input una matrice n*n di tipo color (cioè un tipo enum creato da me) e verifichi tramite una funzione ricorsiva bool, ke la cella in esame è uguale alla successiva...se sono uguali, devo caricarla in una lista. il problema xò è k non riesco a caricare gli elementi nella lista.. e tra l altro, passando gli indici della matrice all interno della funzione, mi dà errori!! help me please.. v posto il codice..
#include <iostream>
#include<list>
using namespace std;
enum colors{w=1, b, u};

bool prova(list<int>&percorsoI,list<int>&percorsoJ,list<colors>&sol,colors**m,int&,int&);


int main()
{
   colors ** m;
   int dim;
        char colore;
        cout<<"dim"<<endl;
        cin>>dim;
        m=new colors*[dim];
        for(int z=0;z<dim;z++)
             m[z]=new colors[dim];
         list<colors>l;
         list<int>percorsoI; //lista per salvare le posizioni di riga
         list<int>percorsoJ; //lista per salvare le posizioni di colonna

        cout << "Inserisci matrice"<<endl;
        for(int i=0; i <dim;i++)
           for(int j=0;j<dim;j++)
               {
                   cin >> colore;
                   m[i][j]=(colors) colore;
               }

       cout << "la matrice: "<<endl;
       for(int i=0; i <dim;i++)
          {
              cout<<endl;
              for(int j=0;j<dim;j++)
                    {

                   cout<< (char)m[i][j] ;
                     }
           }
       cout<<endl;
       int i=0,j=0;
      if(prova(percorsoI,percorsoJ,l,m,i,j))
      {
      cout<<"ok"<<endl;
      }
     else cout<<"NO";

    cout<<"LA LISTA L: "<<endl;
    for(list<colors>::iterator it=l.begin();it!=l.end();it++)
       cout<<(char)(*it)<<endl;
    cout<<endl;
    cout<<"percorso i: "<<endl;
    for(list<int>::iterator it2=percorsoI.begin();it2!=percorsoI.end();it2++)
          cout<<(*it2)<<endl;
    cout<<endl;
    cout<<"percorso j: "<<endl;
    for(list<int>::iterator it3=percorsoJ.begin();it3!=percorsoJ.end();it3++)
              cout<<(*it3)<<endl;

} //fine main


bool prova(list<int>&percorsoI, list<int>&percorsoJ, list<colors>&sol, colors**m, int&i, int&j)
{
   if(m[i][j]==m[i][j+1])
   {
      sol.push_back(m[i][j]);
      percorsoI.push_back(i);
      percorsoJ.push_back(j);
      return prova(percorsoI,percorsoJ,sol,m,i,j++);

   }
   return false;
}



help please!!:(:d
aaa