Advertisement
Guest User

Untitled

a guest
May 4th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.03 KB | None | 0 0
  1. #ifndef LISTA_H
  2. #define LISTA_H
  3.  
  4. #include <iostream>
  5. #include <fstream>
  6. #include <string>
  7.  
  8. #include "string.h"
  9. #include "csapat.h"
  10. #include "focicsapat.h"
  11. #include "kezicsapat.h"
  12. #include "kosarcsapat.h"
  13.  
  14. class Lista   // Lista osztálysablon
  15. {
  16.     struct ListaElem   // privát struktúra
  17.     {
  18.         Csapat* adat; // adat
  19.         ListaElem *kov; // következõ elem
  20.         int index;
  21.         ListaElem(Csapat* cs=NULL, ListaElem *p = NULL, int idx=0) : adat(cs), kov(p), index(idx) {}
  22.         ~ListaElem()
  23.         {
  24.             delete adat;
  25.             delete kov;
  26.         }
  27.     };
  28.  
  29.     ListaElem *elso, *akt; // elsõ + akt pointer
  30.  
  31. public:
  32.  
  33.     Lista()
  34.     {
  35.         akt = elso = new ListaElem;   /* elsõ + akt.*/
  36.     }
  37.  
  38.     void hozzaad(Csapat* dat)
  39.     {
  40.         ListaElem* uj=new ListaElem;
  41.         akt->adat=dat;
  42.         akt->kov=uj;
  43.         uj->index=akt->index+1;
  44.         akt=uj;
  45.     }
  46.  
  47.     //új csapat létrehozása
  48.     void letrehoz()
  49.     {
  50.         int valaszt=-1;
  51.         String nev; //beolvasáshoz
  52.         int letszam;
  53.  
  54.             std::cout<<"Valaszd ki, hogy milyen csapatot szeretnel letrehozni!\n1: Focicsapat\n2: Kezilabdacsapat\n3: Kosarlabdacsapat\n";
  55.             std::cin>>valaszt;
  56.             std::cout<<"Add meg a csapat nevet:"<<std::endl;
  57.             std::cin>>nev;
  58.             std::cout<<"Add meg a letszamot:\n";
  59.             std::cin.clear();
  60.             std::cin.ignore(INT_MAX, '\n');
  61.             while(!(std::cin >> letszam))
  62.             {
  63.                 std::cout << "Helytelen ertek!\n";
  64.                 std::cin.clear();
  65.                 std::cin.ignore(INT_MAX, '\n');
  66.             }
  67.  
  68.             switch(valaszt) //class-tól függ, hány paramétert kell beolvasni
  69.             {
  70.  
  71.             case 1:
  72.             {
  73.                 String vezetoedzo;
  74.                 String masodedzo;
  75.                 std::cout<<"Add meg az vezetoedzo nevet:\n";
  76.                 std::cin>>vezetoedzo;
  77.                 std::cout<<"Add meg az masodedzo nevet:\n";
  78.                 std::cin>>masodedzo;
  79.                 hozzaad(new Focicsapat(nev, letszam, vezetoedzo, masodedzo)); //végül a listához hozzáadjuk
  80.                 break;
  81.             }
  82.  
  83.             case 2:
  84.             {
  85.                 int tamogatas=0;
  86.                 std::cout<<"Add meg az a tamogatas osszeget:\n";
  87.                 std::cin>>tamogatas;
  88.                 hozzaad(new Kezicsapat(nev, letszam, tamogatas));
  89.                 break;
  90.             }
  91.  
  92.             case 3:
  93.             {
  94.                 int pompom=0;
  95.                 std::cout<<"Add meg a pompomlanyok szamat:\n";
  96.                 std::cin>>pompom;
  97.                 hozzaad(new Kosarcsapat(nev, letszam, pompom));
  98.                 break;
  99.             }
  100.             default:
  101.                 std::cout<<"Nincs ilyen opcio!"<<std::endl;
  102.                 break;
  103.             }
  104.         }
  105.  
  106.  
  107.     /*void beszur(Csapat& dat)
  108.     {
  109.         ListaElem *p; // futó pointer
  110.         for (p = elso; p->kov != NULL; p = p->kov)
  111.         {
  112.             ListaElem *uj = new ListaElem(*p); //régit ámásolja
  113.             p->adat = &dat;
  114.             p->kov = uj;
  115.         }
  116.     }*/
  117.  
  118.     //a megadott indexű elemet töröljük a listából
  119.     bool torol(int idx)
  120.     {
  121.         ListaElem* iter=elso->kov;
  122.         ListaElem* lemarado=elso;
  123.  
  124.         if(idx==0) //ha a lista legeleje
  125.             elso=elso->kov;
  126.  
  127.         else
  128.         {
  129.             for(int i=0; i<idx-1; i++) /// idx-1-ig megy, mert az iterrel eggyel elõrébb indul
  130.             {
  131.                 if(elso->kov!=NULL && iter->kov!=NULL ) //ha még van eleme a listának
  132.                 {
  133.                     iter=iter->kov;///továbblépünk arra az elemre, amivel össze kell kapcsolni a törlendõ elõttit
  134.                     lemarado=lemarado->kov;
  135.                 }
  136.             }
  137.  
  138.             if(elso->kov!=NULL && iter->kov!=NULL) //ha még van eleme a listának
  139.             {
  140.                 //külön kell szedni a for ciklustól, mert itt csak az iter lép tovább
  141.                 iter=iter->kov; //az itert továbbléptetjük a törlendő elemről
  142.                 lemarado->kov=iter; //és a törlendő előttit ehhez láncoljuk
  143.                 delete lemarado->kov->adat;
  144.                 delete lemarado->kov;
  145.                 return true;
  146.             }
  147.  
  148.             else
  149.                 std::cout<<"Hibas index"<<std::endl;
  150.         }
  151.  
  152.         return false;
  153.     }
  154.  
  155.     //indexelő operátor
  156.     /*ListaElem* operator[](int idx)
  157.     {
  158.         ListaElem *p=elso;
  159.         int i;
  160.         for (i=0; i<idx && p->kov!=NULL; i++)
  161.         {
  162.             if(p->kov->adat==NULL)
  163.                 throw "NULLVEKTOR";
  164.  
  165.             else
  166.                 p=p->kov;
  167.         }
  168.  
  169.         return p;
  170.     }*/
  171.  
  172.     /*konzolba kiíratjuk az adatbázisban szereplő csapatok adatait */
  173.     void listaz()
  174.     {
  175.         if(elso->kov==NULL) std::cout<<"Jelenleg nincs csapat az adatbazisban!\n";
  176.         for(ListaElem* iter=elso; iter->kov!=NULL; iter=iter->kov)
  177.         {
  178.             std::cout<<"Index: "<<iter->index<<" "; //kiírja az indexet
  179.             iter->adat->kiir(std::cout); //meghívja a származtatott osztályt kiírásra
  180.         }
  181.     }
  182.  
  183.     /* fájlba kiírjuk az adatbázisban szereplő csapatok adatait*/
  184.     void ment()
  185.     {
  186.         std::ofstream file;
  187.         file.open("adatok.txt");
  188.         for(ListaElem* iter=elso; iter->kov!=NULL; iter=iter->kov)
  189.             iter->adat->kiir(file);
  190.     }
  191.  
  192.     /* fájlból beolvassuk egy meglévő listába az ott tárolt adatokat */
  193.     void beolvas()
  194.     {
  195.         String nev;
  196.         int letszam;
  197.         String str1;
  198.         String str2;
  199.  
  200.         int temp;//letszam
  201.         std::ifstream in("adatok.txt");
  202.         while((in>>temp)!=NULL)
  203.         {
  204.             switch(temp)
  205.             {
  206.  
  207.             case 1:
  208.             {
  209.                 in>>nev;
  210.                 in>>letszam;
  211.                 in>>str1;
  212.                 in>>str2;
  213.                 Focicsapat* uj= new Focicsapat(nev, letszam, str1, str2);
  214.                 hozzaad(uj);
  215.                 break;
  216.             }
  217.  
  218.             case 2:
  219.                 {
  220.                 in>>nev;
  221.                 in>>letszam;
  222.                 in>>temp;
  223.                 Kezicsapat* uj= new Kezicsapat(nev, letszam, temp);
  224.                 hozzaad(uj);
  225.                 }
  226.                 break;
  227.  
  228.             case 3:
  229.                 {
  230.                 in>>nev;
  231.                 in>>letszam;
  232.                 in>>temp;
  233.                 Kosarcsapat* uj= new Kosarcsapat(nev, letszam, temp);
  234.                 hozzaad(uj);
  235.                     break;
  236.                 }
  237.             }
  238.         }
  239.  
  240.         in.close();
  241.     }
  242.  
  243.     ~Lista(){
  244.         if(elso->kov==NULL) delete elso;
  245.  
  246.         else{
  247.                 for(ListaElem* iter=elso;iter->kov!=NULL; iter=iter->kov)
  248.                 {
  249.                     ListaElem* kov=iter->kov;
  250.                     delete iter->adat;
  251.                     delete iter;
  252.                     iter=kov;
  253.                 }
  254.         }
  255.     }
  256. };
  257.  
  258. #endif // LISTA_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement