Forumi
Home Pravila i pomoć Članovi Kalendar Današnji postovi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 20.03.2006., 12:02   #1
marioxp
Premium
 
marioxp's Avatar
 
Datum registracije: Feb 2004
Lokacija: Croatia
Postovi: 36
Class s poljem kako?

Vizija ide ovako:
Zelio bi da objekt sadrzava dinamicko (new) dvodimezionalno polje koje ce jedna member function puniti.
E sada je pitanje gdje da incijaliziram to polje u funkciji ili u constructoru
kod koji pravi polje je sljedeci:

char **polje; //dinamicka alokacija polja s pozivacem na pokazivac
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
}


2.pitanje kako bi trebao izgledati copy constructor ako uopca postoji potreba za njim

3.Jeli mogu samo stavit u destructor kod koji ce bristi to polje iz memorije

for (int i = 0; i < sizeP; i++)
delete [] polje[i];
delete [] polje;



Hvala
__________________
mario
marioxp je offline   Reply With Quote
Staro 24.03.2006., 21:44   #2
marioxp
Premium
 
marioxp's Avatar
 
Datum registracije: Feb 2004
Lokacija: Croatia
Postovi: 36
Dio problema sam uspio rijestiti ali se kako to obicno biva naisao novi!

Trebalo bi sada da funkcija clanica (member) setArray to polje popuni to radi kada napravim objekt i to u main izvedem ali mi neradi kada zelim da ona sama prilikom kostrukcije objekta to napravi.
Odnosno ne znam kako da prenesem polje(dvodimensionalno dinamicko) u funkciju i napunim ga.
Da li bi se to moglo da nekako prenesem objekt u funkciju ili da napravim neku drugu klasu koja bi to mogla napraviti.



Code:
// new3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class twodymArray
{public:
	int Row;
	int Column;
public:
	char **pArray;
	twodymArray(); // default constructor
	string primer;
	twodymArray(string Cprimer,int Cletters);  //constructor
	twodymArray(twodymArray &);                //copy constructor
	void setRow (){Row = primer.size();};     //inline member finction
	void setArray(int Row, int Column, string primer, char **pArray);
};
twodymArray::twodymArray()
{
pArray = NULL;
}

twodymArray::twodymArray(string Cprimer,int Cletters)
{
primer = Cprimer;
Column = Cletters;
setRow();
void setArray(int Row, int Column, string primer, char **pArray);

pArray = new char*[Row] ;
	for(int i=0; i<Row; ++i) {
		pArray[i] = new char[Column+1] ;
		pArray[i][Column-1] = NULL ;
	}cout<<"Column = "<<Column<<endl;
}

twodymArray::twodymArray(twodymArray &objtwodymArray)  //copy constructor
{
pArray = new char*[Row];
	for (int i = 0; i < Row; i++) {
		
		
		pArray[i] = new char[Column + 1];
		pArray[i][0] = Column;
		for (int j = 1; j <= Column; j++)
			pArray[i][j] = i + 1 + j / 100.;
	}
}


void setArray(int Row, int Column,string primer,char **pArray)
{string s2;
for(int i=0; i<(Row-(Column-1)); i++)			//formula (row-(letters-1)) je nuzna da ne izadje izvan
{												//polja a daje broj koliko ce se "usporedjica" napraviti
		for (int j=0; j<Column; j++)  //for petlja je skraceni oblik pisanja [i+1] + [i+2] +....
		{s2 = s2 + primer[i+j];}	  //jer tako unosom varijable letters mogu dobit potreban broj ponavljanja
		
			for (int l=0; l<Column; l++)  //upisuje stringove s2 u "array". "l" petlju svaki puta vrti a "i" koristi... 
			{pArray [i][l] = s2[l];}  // ...od odozgor
		
	s2.erase();						//"s2.erase();"ovo je potrebno da se string svaki puta ocisti jer bez brisanja
}									//dolazi do nagomilavanja a ne da mi kida primer u male dijelove za usporedbu

}


int _tmain(int argc, _TCHAR* argv[])
{
	string S1, s2;
	S1=("nestjakomajosiima");
twodymArray theobj(S1,4);
cout<<"Row = "<<theobj.Row<<" Column = "<<theobj.Column<<" Primer = "<<theobj.primer<<endl;




//for(int i=0; i<(theobj.Row-(theobj.Column-1)); i++)			//formula (row-(letters-1)) je nuzna da ne izadje izvan
//{												//polja a daje broj koliko ce se "usporedjica" napraviti
//		for (int j=0; j<theobj.Column; j++)  //for petlja je skraceni oblik pisanja [i+1] + [i+2] +....
//		{s2 = s2 + theobj.primer[i+j];}	  //jer tako unosom varijable letters mogu dobit potreban broj ponavljanja
//		
//			for (int l=0; l<theobj.Column; l++)  //upisuje stringove s2 u "array". "l" petlju svaki puta vrti a "i" koristi... 
//			{theobj.pArray [i][l] = s2[l];}  // ...od odozgor
//		
//	s2.erase();						//"s2.erase();"ovo je potrebno da se string svaki puta ocisti jer bez brisanja
//}		


for (int m=0; m<(theobj.Row-(theobj.Column-1)); m++) //
		{
			for (int n=0; n<theobj.Column; n++)
				{cout<<theobj.pArray[m][n];}
		cout<<endl;
		}

system("PAUSE");
	return 0;
}


Vjerojatno pazljiviji mogu skuziti da nema destruktora, a njega nema jer kada ga stavim izbacuje mi gresku. Zasto???????: hitthewa
__________________
mario
marioxp je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na