Evo mene opet nije da mi se da pisati malo malo ali kada neznas rijestit drugo ti ne preostaje.
Stvari stoje ovako:
Prije sam se gnjavio oko vracanja dvodimezionalnoga polja iz funkcije, a sada sam zapeo na klasi.
Moja je zelja da napravim klasu koja ce alocirati dvodimenzionalno polje a onda da ce funkcija to polje puniti.
I sada nastaju problemi, mislio sam da je najbolje to polje napraviti u constructoru a brisati ga u destructoru. Nesto sam probavao ali neide mi.
Ne znam je li trebam copy constructor?
Pisem u visual c++ pa je kod podjeljen u par fileova pa neznam jeli sam bas u potpunosti dobro kopirao.
class SPLIT
{
public:
SPLIT(unsigned short int);
~SPLIT();
char**fpolje(int,int,int,string);
unsigned short int itsnslova;
string primer;
char **polje;
unsigned short int stupaca,sizeP;
};
SPLIT::SPLIT(unsigned short int nslova):itsnslova(nslova)
{
stupaca = nslova+1;
sizeP = primer.size();
polje = new char*[sizeP];
for (int i = 0; i < sizeP; i++)
{
polje[i] = new char[stupaca + 1];
polje[i][0] = stupaca;
for (int j = 1; j <= stupaca; j++)
polje[i][j] = i + 1 + j / 100.;
}cout<<"konstructor"<<endl;
}
SPLIT::~SPLIT()
{cout<<"destructor"<<endl;
for(int i=0; i<sizeP; i++)
{delete [] polje[i];}
delete [] polje;
cout<<"destructor"<<endl;
}
char**SPLIT::fpolje(int sizeP,int stupaca,int nslova,string primer)
{
char **polje; //dinamicka alokacija polja s pozivacem na pokazivac
string s2;
polje = new char*[sizeP];
for (int i = 0; i < sizeP; i++)
{
polje[i] = new char[stupaca + 1];
polje[i][0] = stupaca;
for (int j = 1; j <= stupaca; j++)
polje[i][j] = i + 1 + j / 100.; //ovo nemam pojma sta je ali tako je u knjizi
}
for(int i=0; i<(sizeP-(nslova-1)); i++) //formula (sizeP-(nslova-1)) je nuzna da ne izadje izvan
{ //polja a daje broj koliko ce se "usporedjica" napraviti
for (int j=0; j<nslova; j++) //for petlja je skraceni oblik pisanja [i+1] + [i+2] +....
{s2 = s2 + primer[i+j];} //jer tako unosom varijable nslova mogu dobit potreban broj ponavljanja
for (int l=0; l<stupaca; l++) //upisuje stringove s2 u "polje". "l" petlju svaki puta vrti a "i" koristi...
{polje [i][l] = s2[l];} // ...od odozgor
s2.erase(); //"s2.erase();"ovo je potrebno da se string svaki puta ocisti jer bez brisanja
}
return polje;
}
int _tmain(int argc, _TCHAR* argv[])
{
SPLIT thesplit(6);
thesplit.primer ="mariomario";
cout<<thesplit.itsnslova<<endl;
cout<<thesplit.stupaca<<endl;
cout<<thesplit.sizeP<<endl;
char **k=0;
k=fpolje(sizeP,stupaca,nslova,primer);
cout<<k[3]<<endl;
cout<<thesplit.primer<<endl;
system("PAUSE");
return 0;
}
(osnovna ideja koja zelim da rijesim s ovom klasom je da jednom petljom pravim stringove od jednoga velioga stringa i punim ih u jedno polje da ih mogu koristiti u drugoj funkciji koja ih usporedjuje s jednim velikim stringom: ovo pisem jer mozda ima netko imam bolju ideju)
Hvala na svim odgovorim a posebno konstruktivnima!