Realizovati klasu ciji ce objekti sluziti za izdvajanje reci iz texta koji je dat kao niz znakova. Jednom recju smatra se niz znakova bez blanko znaka. Klasa treba da sadrzi pokazivac na niz znakova koji predstavlja ulazni text, i koji ce biti inicijalizOvan u konstruktoru. Klasa treba da sadrzi i funkciju koja, pri svakom pozivu, vraca pokazivac na dinamicki niz znakova u kojem je izdvojena naredna rec texta. Kada naidje na kraj texta. ova funkcija treba da vrati nula pokazivac. U glavnom programu isprobati upotrebu ove klase, na nekoliko objekata koji deluju na isti globalni niz znakova.
ja sam resenje zamislio ovako:
# include <iostream.h>
# include <string.h>
class Rec
{
public:
Rec(char*);
Rec();
static char* text;//globalni text
static char* iteratorTexta;//iterira znak po znak kroz text
static char* prviZnakReci;//pokazuje naprvi znak u reci koja treba da bude izdvojena
static char* izdvojReci();//izdvaja reci iz texta
static bool krajTexta();//
void upisiZnak();//upiduje znak u rec
char* rec;//sadrzi novu rec
};
char* Rec::text=NULL;
char* Rec::iteratorTexta=NULL;
char* Rec::prviZnakReci=NULL;
Rec::Rec(char* t)
{
text=t;
iteratorTexta=t;
prviZnakReci=t;
}
Rec::Rec()
{
prviZnakReci=iteratorTexta+1;
iteratorTexta++;
}
bool Rec::krajTexta()
{
char znak=*iteratorTexta;
if(znak=='\0')
{
return 1;
}
else
{
return 0;
}
}
char* Rec::izdvojReci()
{
int brojac=0;
char znak=*iteratorTexta;
while(1)
{
if(znak==' ') break;
brojac++;
iteratorTexta++;
znak=*iteratorTexta;
}
char* pom=new char[brojac+1];
for(int i=0;i<brojac;i++)
{
pom[i]=*(prviZnakReci+i);
}
pom[i]='\0';
return pom;
}
void Rec::upisiZnak()
{
rec=izdvojReci();
}
void main(){
Rec prva("da da da da da"),niz[100];
niz[0]=prva;
prva.upisiZnak();
for(int i=1,p=1;Rec::krajTexta();i++,p++)
{
Rec* pom=new Rec();
pom->upisiZnak();
niz[i]=*pom;
}
}
medjutim on ne radi ono sto ja ocekujem.
zamislio sam da za svaku rec texta pravim novu instancu klase.
mislim da je problem u brojacu koji uopste ne prekida brojanje znakova u reci izmedju dva blanko znaka. kao da ne prepoznaje da je naisao na blanko znak.
hvala unapred za trud svima koji pokusaju da mi pomognu!!!
[filmil: dodao code tag]