Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- using namespace std;
- class Chefuri;
- class Nunta;
- class Botez;
- template <class T> class lista {
- T *prim;
- public:
- lista() {
- prim = NULL;
- }
- void adaugare(T *q);
- void afisare();
- void cautare(int pret);
- void stergere(int nr_pers);
- void sortare(int pret);
- void afisare_poze();
- };
- template <class T> void lista<T>::adaugare(T *q) {
- T *p;
- if (prim == NULL)
- prim = q;
- else
- if (stricmp(prim->locatie, q->locatie) > 0)
- {
- q->urm = prim;
- prim = q;
- }
- else
- {
- for (p = prim; p->urm && stricmp(p->urm->locatie, q->locatie) > 0; p = p->urm);
- q->urm = p->urm;
- p->urm = q;
- }
- }
- template <class T> void lista<T>::afisare() {
- T *p;
- for (p = prim; p; p = p->urm)
- p->afisare();
- }
- template <class T> void lista<T>::cautare(int pret) {
- T *q;
- for(q=prim;q;q=q->urm)
- if (q->pret == pret)
- {
- cout << "----------\n";
- q->afisare();
- }
- }
- template <class T> void lista<T>::stergere(int nr_pers) {
- T *q1, *q2;
- if (prim == NULL)
- {
- cout << "Lista goala\n"; system("pause");
- }
- else
- {
- for (q1 = q2 = prim; q1 && q1->nr_pers != nr_pers; q2 = q1, q1 = q1->urm);
- if(q1)
- if (q1 == q2)
- {
- prim = prim->urm;
- delete q1;
- }
- else
- {
- q2->urm = q1->urm;
- delete q1;
- }
- }
- }
- class Chefuri {
- char *locatie;
- int pret, nr_pers;
- Chefuri *urm;
- int x;
- public:
- Chefuri(int xo,char *l, int p, int n_p) {
- locatie = new char[strlen(l)];
- strcpy(locatie, l);
- pret = p;
- nr_pers = n_p;
- x = xo;
- urm = NULL;
- }
- virtual void afisare() {
- cout << "Locatie: " << locatie;
- cout << "\nPret: " << pret;
- cout << "\nNumar de persoane: " << nr_pers << '\n';
- }
- friend class lista<Chefuri>;
- };
- class Nunta:public Chefuri {
- char *casatorie;
- int nr_poze, durata;
- public:
- Nunta(int xo, char *l, int p, int n_p, char *c, int nr_po, int d) :Chefuri(xo, l, p, n_p) {
- casatorie = new char[strlen(c)];
- strcpy(casatorie, c);
- nr_poze = nr_po;
- durata = d;
- }
- void afisare() {
- Chefuri::afisare();
- cout << "Casatorie civila: " << casatorie << '\n';
- cout << "Numar poza: " << nr_poze << '\n';
- cout << "Durata: " << durata << '\n';
- }
- };
- class Botez : public Chefuri {
- char *t_bisericii;
- int ora;
- public:
- Botez(int xo, char *l, int p, int n_p, char *t_b, int o) : Chefuri(xo,l, p, n_p) {
- t_bisericii = new char[strlen(t_b)];
- strcpy(t_bisericii, t_b);
- ora = o;
- }
- void afisare() {
- Chefuri::afisare();
- cout << "Tipul bisericii: " << t_bisericii << '\n';
- cout << "Ora: " << ora << '\n';
- }
- };
- void introducere(lista<Chefuri> &bz,int x) {
- char locatie[20], casatorie[20], t_bisericii[20];
- int pret, numar_persoane, nr_poze, durata, ora;
- cout << "Locatia: "; cin >> locatie;
- cout << "Pret: "; cin >> pret;
- cout << "Numar de persoane: "; cin >> numar_persoane;
- Chefuri *b;
- switch (x) {
- case 1:
- cout << "Tipul casatoriei: "; cin >> casatorie;
- cout << "Numar de poze: "; cin >> nr_poze;
- cout << "Durata filmarii: "; cin >> durata;
- Nunta *d1;
- d1 = new Nunta(1, locatie, pret, numar_persoane, casatorie, nr_poze, durata);
- b = d1;
- bz.adaugare(b);
- break;
- case 2:
- cout << "Tipul bisericii: "; cin >> t_bisericii;
- cout << "Ora: "; cin >> ora;
- Botez *d;
- d = new Botez(2, locatie, pret, numar_persoane, t_bisericii, ora);
- b = d;
- bz.adaugare(b);
- break;
- }
- }
- void meniu() {
- cout << "1. Introducere\n";
- cout << "2. Afisare\n";
- cout << "3. Cautare\n";
- cout << "4. Stergere\n";
- cout << "5. Sortare dupa pret\n";
- cout << "6. Afisarea ofertei cu cel mai mare numar de poze\n";
- cout << "0. Iesire\n";
- cout << "Optiune: ";
- }
- int main() {
- lista<Chefuri> bz;
- int opt,opt2;
- int pret;
- int nr_pers;
- do {
- system("cls");
- meniu(); cin >> opt;
- switch (opt) {
- case 1: system("cls");
- cout << "1. Introducere nunta\n2.Introducere botez\nOptiune: "; cin >> opt2;
- switch (opt2) {
- case 1: introducere(bz, 1); break;
- case 2: introducere(bz, 2); break;
- default: break;
- }
- break;
- case 2: bz.afisare();
- system("pause");
- break;
- case 3: cout << "Pretul cautat: "; cin >> pret;
- bz.cautare(pret);
- system("pause");
- break;
- case 4: cout << "Numarul de persoane de sters: "; cin >> nr_pers;
- bz.stergere(nr_pers);
- break;
- default: break;
- }
- } while (opt);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement