Pereiti prie turinio

Sarasu rinkinys Kamienas, Sakos


Rekomenduojami pranešimai

Sveiki, manau kad siame forume tikrai nera daug dirbusiu su sarasu rinkiniu, todel greitu metu ir nesitikiu gauti pagalbos, bet gal uzmatys sia tema kuris jau zino kazka minimalaus apie si rinkini. Jo ideja tokia Yra tarsi kamienas(SarH). Kamienas turi savo pavadinima mano atveju data. Taip pat yra is Sakos(SarV) (jos prijungiamos prie kamieno).

Problema tokia. As noriu rasyti kazkokia funkcija uz KLASES ribu!. Vadinasi norint pamatyti visus sio ssaraso duomenis man reikes kazkokiu metodu void Pradzia(); bool Yra() ir void Kitas(). Butent del so ir yra daugiausiai problemu. Kaip man ji redaguoti, nes dabar kai bandau funkcijoje cikla ir einu per siuos saraso elementus gaunu tik paskutini viena saraso elementa. Tiesiog garantuoju kad klaida yra butent tame metode, as tik nezinau kaip ji pakeisti kad su sarasu butu viskas ok.

 

Duomenu failas

 

2014-04-24;

Laurynas Sodų g., 8 3 5 45895

Mindaugas Stadiono g., 7 9 9 46589

Romas Gėlių g., 9 7 4 46841

Karolis Rūdupio g., 12 4 3 56879

Paulius Rutkiškių g., 4 8 9 65489

 

Mano gautas rezultatas (konsoleje!!!! rezultatu faile viskas ok!!!)

Laurynas Sodų g., 8 3 5 45895

 

 
struct Leidiniai{
string pavarde;
string adresas;
int pradzia;
int ilgis;
int kiekis;
string kodas;
};

struct SarV{
Leidiniai duom;
SarV *sekV;
};

struct SarH{
string data;
SarH *sekH;
SarV *prV;
};

class Sakotas{
private:
SarH *pr, *d;
void NaikintiSakosSarasa(SarV *&pr);
void SkaitytiDokumenta(wstring fv, string &pv, SarV *&prV);
void SpausdintiSakosSarasa(ofstream &rf, SarV *prV);

Sakotas(const Sakotas &kitas);
Sakotas & operator = (const Sakotas &kitas);
public:
Sakotas():pr(NULL), d(NULL){}
~Sakotas();

void NaikintiSarasa();
void SpausdintiSarasa(string failas, string data);
void IterptiSaka(wstring failas);

void Pradzia(){d = pr;}
bool Yra(){return d != NULL;}
void Kitas(){d = d->sekH;} // sitas turi buti koreguojamas, bet kaip!!!!!!!!??????

Leidiniai Imti(){return d->prV->duom;}
};

Sakotas::~Sakotas(){
NaikintiSarasa();
}

void Sakotas::NaikintiSarasa(){
SarH *d = pr;
while(pr != NULL){
	d = pr;
	pr = pr->sekH;
	NaikintiSakosSarasa(d->prV);
	delete d;
}
}

void Sakotas::NaikintiSakosSarasa(SarV *&pr){
SarV *d;
while(pr != NULL){
	d = pr;
	pr = pr->sekV;
	delete d;
}
}

void Sakotas::SkaitytiDokumenta(wstring fv, string &pv, SarV *&prV){
ifstream fd(fv.c_str());
getline(fd, pv, ';');
prV = NULL;
while(!fd.eof()){
	Leidiniai leid;
	fd >> leid.pavarde;
	getline(fd, leid.adresas, ',');
	fd >> leid.pradzia;
	fd >> leid.ilgis;
	fd >> leid.kiekis;
	fd >> leid.kodas;
	fd.ignore();

	SarV *s = new SarV;
	s->duom = leid;
	s->sekV = prV;
	prV = s;
}
fd.close();
}

void Sakotas::SpausdintiSakosSarasa(ofstream &rf, SarV *prV){
SarV *p = prV;
while(p != NULL){
	Leidiniai leid = p->duom;
	rf << leid.adresas << " " << leid.pavarde << " " << leid.pradzia << " " << leid.ilgis << " " << leid.kiekis << " " << leid.kodas << endl;
	p = p->sekV;
}
rf << endl;
}

void Sakotas::SpausdintiSarasa(string failas, string data){
ofstream rf(failas.c_str(), ios::app);
rf.setf(ios::left);
rf << data << endl;
SarH *d = pr;
while(d != NULL){
	rf << d->data << endl;
	SarV *v = d->prV;
	SpausdintiSakosSarasa(rf, v);
	d = d->sekH;
}
rf.close();
}

void Sakotas::IterptiSaka(wstring failas){
SarV *prV = NULL;
string fk;
SkaitytiDokumenta(failas, fk, prV);

SarH *d = new SarH;
d->data = fk;
d->prV = prV;
d->sekH = pr;
pr = d;
}

 

void Kruvis(Sakotas & sakotas);

int main(){

Sakotas sakotas;

Ktuvis(sakotas);

return 0;
}

void Kruvis(Sakotas & sakotas){
for(sakotas.Pradzia(); sakotas.Yra(); sakotas.Kitas()){
	Leidiniai leid = sakotas.Imti();
	cout << leid.vardas << " " << leid.gatve << endl;

}

Redagavo saltis77
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...