Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool AutoDuomenys::operator<(const AutoDuomenys &kitas) {
- if( co2<kitas.co2 && kategorija == 5 && kitas.kategorija == 5)
- return true;
- return false;
- }
- class AutoElementas {
- AutoDuomenys automob; //informacija apie automobili
- AutoElementas *pirmyn; //tolimesnio elemento adresas
- AutoElementas *atgal; //pries esancio elemento adresas
- public:
- /** Konstruktorius
- @param Duom - duomenu dalis
- @param pirm - adresas pirmyn
- @param atga - adresas atgal */
- AutoElementas(const AutoDuomenys & Duom = AutoDuomenys(), AutoElementas * const pirm = NULL,
- AutoElementas * const atga = NULL):
- automob(Duom), pirmyn (pirm), atgal (atga) { }
- /** Priskiria duomenu dali */
- void PriskirtiDuom(const AutoDuomenys & Duom) { automob = Duom; }
- /** Priskira rodyklei pirmyn reiksme */
- void PriskirtiPirmyn(AutoElementas *pirm) { pirmyn = pirm; }
- /** Priskira rodyklei atgal reiksme */
- void PriskirtiAtgal(AutoElementas *atga) { atgal = atga; }
- /** Grazina Darbuotojas tipo objekta */
- AutoDuomenys Imti() const { return automob; }
- /** Grazina adresa pirmyn */
- AutoElementas *Pirmyn() { return pirmyn; }
- /** Grazina adresa pirmyn */
- const AutoElementas *Pirmyn () const { return pirmyn; }
- /** Grazina adresa atgal */
- AutoElementas *Atgal() { return atgal; }
- /** Grazina adresa atgal */
- const AutoElementas *Atgal() const {return atgal;}
- bool operator <(const AutoElementas & xx);
- AutoElementas & operator =(const AutoElementas & xx);
- };
- AutoElementas & AutoElementas::operator =(const AutoElementas & xx)
- {
- automob = xx.automob;
- return *this;
- }
- bool AutoElementas::operator <(const AutoElementas & xx)
- {
- return ( automob < xx.automob );
- }
- class Automobiliai {
- AutoElementas *pr, *eina, *pb;
- //pr - saraso pradzios rodykle
- //eina - sasajos metodu rodykle
- //pb - rodykle i paskutini saraso elementa
- Automobiliai (const Automobiliai & kitas);
- Automobiliai & operator = (const Automobiliai & kitas);
- public:
- Automobiliai(): pr(NULL), eina(NULL), pb(NULL) { }
- ~Automobiliai() { Naikinti(); }
- /** Nustato rodykle i saraso pradzia */
- void PradetiPr() { eina = pr; }
- /** Nustato rodykle i saraso pabaiga */
- void PradetiPb() { eina = pb; }
- /** Tikrina sasajos rodykle
- @return grazina true, jei rodykle lygi NULL */
- bool Baigti() const { return eina == NULL; }
- /** Grazina Darbuotojas tipo objekta pagal sasajos rodykle */
- AutoDuomenys ImtiEina() const { return eina->Imti(); }
- /** Pastumia sasajos rodykle i prieki */
- void EitiPirmyn() { eina = eina->Pirmyn(); }
- /** Pastumia sasajos rodykle atgal */
- void EitiAtgal() { eina = eina->Atgal(); }
- void Sukurti(const AutoDuomenys & duomp);
- void Naikinti();
- void Rikiuoti();
- };
- /** Sunaikina sarasa */
- void Automobiliai::Naikinti()
- {
- AutoElementas *naik;
- while(pr != NULL) {
- naik = pr;
- pr = pr->Pirmyn();
- delete naik;
- }
- pb = NULL;
- eina = NULL;
- }
- /** Sukuria naujo saraso elementa
- @param duomp - klases AutoDuomenys kintamasis */
- void Automobiliai::Sukurti(const AutoDuomenys & duomp)
- {
- if (pr == NULL)
- pb = pr = new AutoElementas(duomp);
- else {
- AutoElementas *iterpt = new AutoElementas(duomp, NULL, pb);
- pb->PriskirtiPirmyn(iterpt);
- pb = iterpt;
- }
- }
- void Skaityti(const string fv, Automobiliai & objAuto) {
- int k, c;
- string g, m;
- ifstream fd(fv);
- while( !fd.eof() ) {
- fd >> g >> m >> k >> c;
- AutoDuomenys C(g,m,k,c);
- objAuto.Sukurti(C);
- }
- }
- void Spausdinti(const string fv, Automobiliai & objAuto, string eil)
- {
- ofstream fr(fv,ios::app);
- fr << eil << endl;
- fr << "-------------------------------------------" << endl;
- fr << "| Gamintojas | Modelis | Kategorija | CO2 |" << endl;
- fr << "-------------------------------------------" << endl;
- for (objAuto.PradetiPr(); !objAuto.Baigti(); objAuto.EitiPirmyn()) {
- AutoDuomenys automob = objAuto.ImtiEina();
- fr << "|" << left << setw(12) << automob.ImtiGamintoja() << "|" <<
- setw(9) << automob.ImtiModeli() << "|" << setw(12)
- << automob.ImtiKategorija() << "|" << setw(5) << automob.ImtiCo2() << "|";
- fr << endl;
- }
- fr << "--------------------------------------------" << endl;
- fr.close();
- }
- AutoDuomenys Minimumas(Automobiliai & objAuto) {
- AutoDuomenys min, A;
- bool pirmas = true;
- for(objAuto.PradetiPr();!objAuto.Baigti();objAuto.EitiPirmyn()) {
- A = objAuto.ImtiEina();
- if(A.ImtiKategorija() == 5 && pirmas == true) {
- pirmas = false;
- min = A;
- }
- if(A<min && pirmas == false) {
- min = A;
- }
- }
- return min;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement