Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4.  
  5. class Chefuri;
  6. class Nunta;
  7. class Botez;
  8.  
  9. template <class T> class lista {
  10.     T *prim;
  11. public:
  12.     lista() {
  13.         prim = NULL;
  14.     }
  15.     void adaugare(T *q);
  16.     void afisare();
  17.     void cautare(int pret);
  18.     void stergere(int nr_pers);
  19.     void sortare(int pret);
  20.     void afisare_poze();
  21. };
  22.  
  23. template <class T> void lista<T>::adaugare(T *q) {
  24.     T *p;
  25.     if (prim == NULL)
  26.         prim = q;
  27.     else
  28.         if (stricmp(prim->locatie, q->locatie) > 0)
  29.         {
  30.             q->urm = prim;
  31.             prim = q;
  32.         }
  33.         else
  34.         {
  35.             for (p = prim; p->urm && stricmp(p->urm->locatie, q->locatie) > 0; p = p->urm);
  36.             q->urm = p->urm;
  37.             p->urm = q;
  38.         }
  39. }
  40.  
  41. template <class T> void lista<T>::afisare() {
  42.     T *p;
  43.     for (p = prim; p; p = p->urm)
  44.         p->afisare();
  45. }
  46.  
  47. template <class T> void lista<T>::cautare(int pret) {
  48.     T *q;
  49.     for(q=prim;q;q=q->urm)
  50.         if (q->pret == pret)
  51.         {
  52.             cout << "----------\n";
  53.             q->afisare();
  54.         }
  55. }
  56.  
  57. template <class T> void lista<T>::stergere(int nr_pers) {
  58.     T *q1, *q2;
  59.     if (prim == NULL)
  60.     {
  61.         cout << "Lista goala\n"; system("pause");
  62.     }
  63.     else
  64.     {
  65.         for (q1 = q2 = prim; q1 && q1->nr_pers != nr_pers; q2 = q1, q1 = q1->urm);
  66.         if(q1)
  67.             if (q1 == q2)
  68.             {
  69.                 prim = prim->urm;
  70.                 delete q1;
  71.             }
  72.             else
  73.             {
  74.                 q2->urm = q1->urm;
  75.                 delete q1;
  76.             }
  77.     }
  78. }
  79.  
  80. class Chefuri {
  81.     char *locatie;
  82.     int pret, nr_pers;
  83.     Chefuri *urm;
  84.     int x;
  85. public:
  86.     Chefuri(int xo,char *l, int p, int n_p) {
  87.         locatie = new char[strlen(l)];
  88.         strcpy(locatie, l);
  89.         pret = p;
  90.         nr_pers = n_p;
  91.         x = xo;
  92.         urm = NULL;
  93.     }
  94.     virtual void afisare() {
  95.         cout << "Locatie: " << locatie;
  96.         cout << "\nPret: " << pret;
  97.         cout << "\nNumar de persoane: " << nr_pers << '\n';
  98.     }
  99.     friend class lista<Chefuri>;
  100. };
  101.  
  102. class Nunta:public Chefuri {
  103.     char *casatorie;
  104.     int nr_poze, durata;
  105. public:
  106.     Nunta(int xo, char *l, int p, int n_p, char *c, int nr_po, int d) :Chefuri(xo, l, p, n_p) {
  107.         casatorie = new char[strlen(c)];
  108.         strcpy(casatorie, c);
  109.         nr_poze = nr_po;
  110.         durata = d;
  111.     }
  112.     void afisare() {
  113.         Chefuri::afisare();
  114.         cout << "Casatorie civila: " << casatorie << '\n';
  115.         cout << "Numar poza: " << nr_poze << '\n';
  116.         cout << "Durata: " << durata << '\n';
  117.     }
  118. };
  119.  
  120. class Botez : public Chefuri {
  121.     char *t_bisericii;
  122.     int ora;
  123. public:
  124.     Botez(int xo, char *l, int p, int n_p, char *t_b, int o) : Chefuri(xo,l, p, n_p) {
  125.         t_bisericii = new char[strlen(t_b)];
  126.         strcpy(t_bisericii, t_b);
  127.         ora = o;
  128.     }
  129.     void afisare() {
  130.         Chefuri::afisare();
  131.         cout << "Tipul bisericii: " << t_bisericii << '\n';
  132.         cout << "Ora: " << ora << '\n';
  133.     }
  134. };
  135.  
  136. void introducere(lista<Chefuri> &bz,int x) {
  137.     char locatie[20], casatorie[20], t_bisericii[20];
  138.     int pret, numar_persoane, nr_poze, durata, ora;
  139.     cout << "Locatia: "; cin >> locatie;
  140.     cout << "Pret: "; cin >> pret;
  141.     cout << "Numar de persoane: "; cin >> numar_persoane;
  142.     Chefuri *b;
  143.     switch (x) {
  144.     case 1:
  145.         cout << "Tipul casatoriei: "; cin >> casatorie;
  146.         cout << "Numar de poze: "; cin >> nr_poze;
  147.         cout << "Durata filmarii: "; cin >> durata;
  148.         Nunta *d1;
  149.         d1 = new Nunta(1, locatie, pret, numar_persoane, casatorie, nr_poze, durata);
  150.         b = d1;
  151.         bz.adaugare(b);
  152.         break;
  153.     case 2:
  154.         cout << "Tipul bisericii: "; cin >> t_bisericii;
  155.         cout << "Ora: "; cin >> ora;
  156.         Botez *d;
  157.         d = new Botez(2, locatie, pret, numar_persoane, t_bisericii, ora);
  158.        
  159.         b = d;
  160.         bz.adaugare(b);
  161.         break;
  162.     }
  163. }
  164.  
  165. void meniu() {
  166.     cout << "1. Introducere\n";
  167.     cout << "2. Afisare\n";
  168.     cout << "3. Cautare\n";
  169.     cout << "4. Stergere\n";
  170.     cout << "5. Sortare dupa pret\n";
  171.     cout << "6. Afisarea ofertei cu cel mai mare numar de poze\n";
  172.     cout << "0. Iesire\n";
  173.     cout << "Optiune: ";
  174. }
  175.  
  176. int main() {
  177.     lista<Chefuri> bz;
  178.     int opt,opt2;
  179.     int pret;
  180.     int nr_pers;
  181.     do {
  182.         system("cls");
  183.         meniu(); cin >> opt;
  184.         switch (opt) {
  185.         case 1: system("cls");
  186.             cout << "1. Introducere nunta\n2.Introducere botez\nOptiune: "; cin >> opt2;
  187.             switch (opt2) {
  188.             case 1: introducere(bz, 1); break;
  189.             case 2: introducere(bz, 2); break;
  190.             default: break;
  191.             }
  192.             break;
  193.         case 2: bz.afisare();
  194.             system("pause");
  195.             break;
  196.         case 3: cout << "Pretul cautat: "; cin >> pret;
  197.             bz.cautare(pret);
  198.             system("pause");
  199.             break;
  200.         case 4: cout << "Numarul de persoane de sters: "; cin >> nr_pers;
  201.             bz.stergere(nr_pers);
  202.             break;
  203.         default: break;
  204.         }
  205.     } while (opt);
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement