Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef LISTA_H
- #define LISTA_H
- #include <iostream>
- #include <fstream>
- #include <string>
- #include "string.h"
- #include "csapat.h"
- #include "focicsapat.h"
- #include "kezicsapat.h"
- #include "kosarcsapat.h"
- class Lista // Lista osztálysablon
- {
- struct ListaElem // privát struktúra
- {
- Csapat* adat; // adat
- ListaElem *kov; // következõ elem
- int index;
- ListaElem(Csapat* cs=NULL, ListaElem *p = NULL, int idx=0) : adat(cs), kov(p), index(idx) {}
- ~ListaElem()
- {
- delete adat;
- delete kov;
- }
- };
- ListaElem *elso, *akt; // elsõ + akt pointer
- public:
- Lista()
- {
- akt = elso = new ListaElem; /* elsõ + akt.*/
- }
- void hozzaad(Csapat* dat)
- {
- ListaElem* uj=new ListaElem;
- akt->adat=dat;
- akt->kov=uj;
- uj->index=akt->index+1;
- akt=uj;
- }
- //új csapat létrehozása
- void letrehoz()
- {
- int valaszt=-1;
- String nev; //beolvasáshoz
- int letszam;
- std::cout<<"Valaszd ki, hogy milyen csapatot szeretnel letrehozni!\n1: Focicsapat\n2: Kezilabdacsapat\n3: Kosarlabdacsapat\n";
- std::cin>>valaszt;
- std::cout<<"Add meg a csapat nevet:"<<std::endl;
- std::cin>>nev;
- std::cout<<"Add meg a letszamot:\n";
- std::cin.clear();
- std::cin.ignore(INT_MAX, '\n');
- while(!(std::cin >> letszam))
- {
- std::cout << "Helytelen ertek!\n";
- std::cin.clear();
- std::cin.ignore(INT_MAX, '\n');
- }
- switch(valaszt) //class-tól függ, hány paramétert kell beolvasni
- {
- case 1:
- {
- String vezetoedzo;
- String masodedzo;
- std::cout<<"Add meg az vezetoedzo nevet:\n";
- std::cin>>vezetoedzo;
- std::cout<<"Add meg az masodedzo nevet:\n";
- std::cin>>masodedzo;
- hozzaad(new Focicsapat(nev, letszam, vezetoedzo, masodedzo)); //végül a listához hozzáadjuk
- break;
- }
- case 2:
- {
- int tamogatas=0;
- std::cout<<"Add meg az a tamogatas osszeget:\n";
- std::cin>>tamogatas;
- hozzaad(new Kezicsapat(nev, letszam, tamogatas));
- break;
- }
- case 3:
- {
- int pompom=0;
- std::cout<<"Add meg a pompomlanyok szamat:\n";
- std::cin>>pompom;
- hozzaad(new Kosarcsapat(nev, letszam, pompom));
- break;
- }
- default:
- std::cout<<"Nincs ilyen opcio!"<<std::endl;
- break;
- }
- }
- /*void beszur(Csapat& dat)
- {
- ListaElem *p; // futó pointer
- for (p = elso; p->kov != NULL; p = p->kov)
- {
- ListaElem *uj = new ListaElem(*p); //régit ámásolja
- p->adat = &dat;
- p->kov = uj;
- }
- }*/
- //a megadott indexű elemet töröljük a listából
- bool torol(int idx)
- {
- ListaElem* iter=elso->kov;
- ListaElem* lemarado=elso;
- if(idx==0) //ha a lista legeleje
- elso=elso->kov;
- else
- {
- for(int i=0; i<idx-1; i++) /// idx-1-ig megy, mert az iterrel eggyel elõrébb indul
- {
- if(elso->kov!=NULL && iter->kov!=NULL ) //ha még van eleme a listának
- {
- iter=iter->kov;///továbblépünk arra az elemre, amivel össze kell kapcsolni a törlendõ elõttit
- lemarado=lemarado->kov;
- }
- }
- if(elso->kov!=NULL && iter->kov!=NULL) //ha még van eleme a listának
- {
- //külön kell szedni a for ciklustól, mert itt csak az iter lép tovább
- iter=iter->kov; //az itert továbbléptetjük a törlendő elemről
- lemarado->kov=iter; //és a törlendő előttit ehhez láncoljuk
- delete lemarado->kov->adat;
- delete lemarado->kov;
- return true;
- }
- else
- std::cout<<"Hibas index"<<std::endl;
- }
- return false;
- }
- //indexelő operátor
- /*ListaElem* operator[](int idx)
- {
- ListaElem *p=elso;
- int i;
- for (i=0; i<idx && p->kov!=NULL; i++)
- {
- if(p->kov->adat==NULL)
- throw "NULLVEKTOR";
- else
- p=p->kov;
- }
- return p;
- }*/
- /*konzolba kiíratjuk az adatbázisban szereplő csapatok adatait */
- void listaz()
- {
- if(elso->kov==NULL) std::cout<<"Jelenleg nincs csapat az adatbazisban!\n";
- for(ListaElem* iter=elso; iter->kov!=NULL; iter=iter->kov)
- {
- std::cout<<"Index: "<<iter->index<<" "; //kiírja az indexet
- iter->adat->kiir(std::cout); //meghívja a származtatott osztályt kiírásra
- }
- }
- /* fájlba kiírjuk az adatbázisban szereplő csapatok adatait*/
- void ment()
- {
- std::ofstream file;
- file.open("adatok.txt");
- for(ListaElem* iter=elso; iter->kov!=NULL; iter=iter->kov)
- iter->adat->kiir(file);
- }
- /* fájlból beolvassuk egy meglévő listába az ott tárolt adatokat */
- void beolvas()
- {
- String nev;
- int letszam;
- String str1;
- String str2;
- int temp;//letszam
- std::ifstream in("adatok.txt");
- while((in>>temp)!=NULL)
- {
- switch(temp)
- {
- case 1:
- {
- in>>nev;
- in>>letszam;
- in>>str1;
- in>>str2;
- Focicsapat* uj= new Focicsapat(nev, letszam, str1, str2);
- hozzaad(uj);
- break;
- }
- case 2:
- {
- in>>nev;
- in>>letszam;
- in>>temp;
- Kezicsapat* uj= new Kezicsapat(nev, letszam, temp);
- hozzaad(uj);
- }
- break;
- case 3:
- {
- in>>nev;
- in>>letszam;
- in>>temp;
- Kosarcsapat* uj= new Kosarcsapat(nev, letszam, temp);
- hozzaad(uj);
- break;
- }
- }
- }
- in.close();
- }
- ~Lista(){
- if(elso->kov==NULL) delete elso;
- else{
- for(ListaElem* iter=elso;iter->kov!=NULL; iter=iter->kov)
- {
- ListaElem* kov=iter->kov;
- delete iter->adat;
- delete iter;
- iter=kov;
- }
- }
- }
- };
- #endif // LISTA_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement