Advertisement
TheVigilante39

what a story mark

Jan 16th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.70 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <iomanip>
  5. #include <cstring>
  6. int ok = 0, list_counter = 0;
  7. using namespace std;
  8. struct elv{
  9.     char nume[40];
  10.     int an;
  11.     char localizare[40];
  12.     };
  13. struct nod{
  14.     elv info;
  15.     nod *urm;
  16.     };
  17. nod * prim,* ultim;
  18. void adauga(nod *&prim, nod *&ultim){
  19.     elv v;
  20.     cout<<"Nume Monument:";cin.get(v.nume,40);cin.get();
  21.     if ((strcmp(v.nume,"Muzeul Olteniei")==0)||(strcmp(v.nume,"muzeul olteniei")==0)){
  22.         v.an = 1928;
  23.         strcpy(v.localizare, "Str. Popa Sapca nr. 8");
  24.     }
  25.     else if((strcmp(v.nume,"Muzeul de Arta")==0)||(strcmp(v.nume,"muzeul de arta")==0)){
  26.         v.an = 1908;
  27.         strcpy(v.localizare, "Calea Unirii nr. 15");
  28.     }
  29.     else if((strcmp(v.nume,"Casa Vernescu")==0)||(strcmp(v.nume,"casa vernescu")==0)){
  30.         v.an = 1910;
  31.         strcpy(v.localizare, "Strada Mitropolit Firmilian nr. 20");
  32.     }
  33.     else if((strcmp(v.nume,"Palatul de Justitie")==0)||(strcmp(v.nume,"palatul de justitie")==0)){
  34.         v.an = 1880;
  35.         strcpy(v.localizare, "Str. Alexandru Ioan Cuza, nr. 13");
  36.     }
  37.     else if((strcmp(v.nume,"Casa Canciulescu")==0)||(strcmp(v.nume,"casa canciulescu")==0)){
  38.         v.an = 1928;
  39.         strcpy(v.localizare, "Str. Simion Barnutiu nr. 2");
  40.     }
  41.     else if((strcmp(v.nume,"Casa Ferraru")==0)||(strcmp(v.nume,"casa ferraru")==0)){
  42.         v.an = 1914;
  43.         strcpy(v.localizare, "Calea Unirii nr. 68");
  44.     }
  45.     else if((strcmp(v.nume,"Casa Dianu")==0)||(strcmp(v.nume,"casa dianu")==0)){
  46.         v.an = 1905;
  47.         strcpy(v.localizare, "Str. 24 Ianuarie nr. 4");
  48.     }
  49.     else if((strcmp(v.nume,"Capela Sf. Maria")==0)||(strcmp(v.nume,"capela sf. maria")==0)){
  50.         v.an = 1900;
  51.         strcpy(v.localizare, "Str. Enescu George");
  52.     }
  53.     else if((strcmp(v.nume,"Casa Zwillinger")==0)||(strcmp(v.nume,"casa zwillinger")==0)){
  54.         v.an = 1900;
  55.         strcpy(v.localizare, "Calea Unirii nr. 88");
  56.     }
  57.     else if((strcmp(v.nume,"Hanul Putureanu")==0)||(strcmp(v.nume,"hanul putureanu")==0)){
  58.         v.an = 1887;
  59.         strcpy(v.localizare, "Str. Matei Basarab nr. 9");
  60.     }
  61.     else {
  62.         cout << "Nu ati introdus un monument de pe lista. Va rugam introduceti urmatoarele : " << endl;
  63.         cout << "-Introduceti anul constructiei :";cin >> v.an;
  64.         cin.get();
  65.         cout << "-Introduceti locatia : ";cin.get(v.localizare,40);
  66.         cin.get();
  67.     }
  68.     nod* p;
  69.     if((prim==ultim)&&(prim==0)){
  70.             prim=ultim=new nod;
  71.             prim->info=v;
  72.             prim->urm=0;
  73.             }
  74.     else {
  75.         p=new nod;
  76.         p->info=v;
  77.         ultim->urm=p;
  78.         ultim=p;
  79.         ultim->urm=0;
  80.     }
  81.     ok = 1;
  82. }
  83. void afisare(nod *&prim){
  84.     nod* p;
  85.     int i=1;
  86.     p=prim;
  87.     cout<<"    "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<"     An"<<left<<' '<<"Localizare"<<endl<<endl;
  88.     while(p){
  89.         cout<<i<<"."<<' ';
  90.         cout<<left<<" "<<setw(20)<<p->info.nume <<right<<setw(10)<<p->info.an<<"            "<<left<<setw(30)<<p->info.localizare<<endl;
  91.         p=p->urm;
  92.         i++;
  93.     }}
  94. void min(nod *prim){
  95.     nod *p;
  96.     double min=9000000;
  97.     p=prim;
  98.     if (p == 0){
  99.         cout << "Nu ati introdus nimic" << endl;
  100.         return;
  101.     }
  102.     else {
  103.         while(p){
  104.             if(p->info.an<min)min=p->info.an;
  105.             p=p->urm;
  106.         }
  107.         cout<<"    "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<"    An"<<left<<' '<<"Localizare"<<endl<<endl;
  108.         p=prim;
  109.         while(p){
  110.             if(p->info.an==min) cout<<left<<"   "<<setw(20)<<p->info.nume<<right<<setw(10)<<p->info.an<<"            "<<left<<setw(30)<<p->info.localizare<<endl;
  111.             p=p->urm;
  112.         }
  113.     }
  114. }
  115. void max(nod *prim){
  116.     nod *p;
  117.     double max=-1;
  118.     p=prim;
  119.     if (p == 0){
  120.         cout << "Nu ati introdus nimic" << endl;
  121.         return;
  122.     }
  123.     else {
  124.         while(p){
  125.             if(p->info.an>max)max=p->info.an;
  126.             p=p->urm;
  127.         }
  128.         cout<<"    "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<"    An"<<left<<' '<<"Localizare"<<endl<<endl;
  129.         p=prim;
  130.         while(p){
  131.             if(p->info.an==max)cout<<left<<"   "<<setw(20)<<p->info.nume<<right<<setw(10)<<p->info.an<<"            "<<left<<setw(30)<<p->info.localizare<<endl;
  132.             p=p->urm;
  133.          }
  134.     }
  135. }
  136. void sortcnume(){
  137.     elv x;
  138.     int k;
  139.     nod *p;
  140.     while(k){
  141.         p=prim;
  142.         k=0;
  143.         while(p->urm){
  144.             if(strcmp(p->info.nume,p->urm->info.nume)==1){
  145.                 x=p->info;
  146.                 p->info=p->urm->info;
  147.                 p->urm->info=x;
  148.                 k=1;
  149.                 }
  150.             p=p->urm;}
  151.       }
  152. }
  153. void sortdnume(){
  154.     elv x;
  155.     int k;
  156.     nod *p;
  157.     while(k){
  158.         p=prim;
  159.         k=0;
  160.         while(p->urm){
  161.             if(strcmp(p->info.nume,p->urm->info.nume)==-1){
  162.                 x=p->info;
  163.                 p->info=p->urm->info;
  164.                 p->urm->info=x;
  165.                 k=1;
  166.                 }
  167.             p=p->urm;}
  168.       }
  169. }
  170. void sortcloc(){
  171.     elv x;
  172.     int k;
  173.     nod *p;
  174.     while(k){
  175.         p=prim;
  176.         k=0;
  177.         while(p->urm){
  178.             if(strcmp(p->info.localizare,p->urm->info.localizare)==1){
  179.                 x=p->info;
  180.                 p->info=p->urm->info;
  181.                 p->urm->info=x;
  182.                 k=1;
  183.                 }
  184.             p=p->urm;}
  185.       }
  186. }
  187. void sortdloc(){
  188.     elv x;
  189.     int k;
  190.     nod *p;
  191.     while(k){
  192.         p=prim;
  193.         k=0;
  194.         while(p->urm){
  195.             if(strcmp(p->info.localizare,p->urm->info.localizare)==-1){
  196.                 x=p->info;
  197.                 p->info=p->urm->info;
  198.                 p->urm->info=x;
  199.                 k=1;
  200.                 }
  201.             p=p->urm;}
  202.       }
  203. }
  204. void sortcan(){
  205.     nod *p;
  206.     int k;
  207.     elv x;
  208.     while(k){
  209.         p=prim;
  210.         k=0;
  211.         while(p->urm){
  212.             if(p->info.an>p->urm->info.an){
  213.                 x=p->info;
  214.                 p->info=p->urm->info;
  215.                 p->urm->info=x;
  216.                 k=1;
  217.                 }
  218.             p=p->urm;
  219.         }
  220.       }
  221. }
  222. void sortdan(){
  223.     nod *p;
  224.     int k;
  225.     elv x;
  226.     while(k){
  227.         p=prim;
  228.         k=0;
  229.         while(p->urm){
  230.             if(p->info.an<p->urm->info.an){
  231.                 x=p->info;
  232.                 p->info=p->urm->info;
  233.                 p->urm->info=x;
  234.                 k=1;
  235.                 }
  236.             p=p->urm;
  237.         }
  238.       }
  239.  
  240. }
  241. void meniusortare(){
  242.     int k;
  243.     while(k!=8){
  244.         cout<<"Alege sortarea:"<<endl<<endl;
  245.         cout<<"1. Sortare crescatoare an constructie"<<endl;
  246.         cout<<"2. Sortare descrescatoare constructie"<<endl;
  247.         cout<<"3. Sortare alfabetica dupa numele monumentului"<<endl;
  248.         cout<<"4. Sortare invers alfabetica dupa numele monumentului"<<endl;
  249.         cout<<"5. Sortare alfabetica localizare"<<endl;
  250.         cout<<"6. Sortare invers alfabetica localizare"<<endl;
  251.         cout<<"7. Afisare"<<endl;
  252.         cout<<"8. Iesire"<<endl;
  253.         cout<<endl<<"Alege optiunea:";
  254.         cin>>k;
  255.         switch(k){
  256.             case 1:system("cls");
  257.                    if (ok){
  258.                         sortcan();
  259.                         cout<<"SORTAREA S-A EFECTUAT.";
  260.                    }
  261.                    else if (( ok )&& ( list_counter == 1))
  262.                         cout <<"LISTA ARE UN SINGUR ELEMENT, SORTAREA ESTE NESEMNIFICATIVA.";
  263.                    else
  264.                        cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
  265.                    getch();
  266.                    system("cls");
  267.                    break;
  268.             case 2:system("cls");
  269.                    if (ok){
  270.                         sortdan();
  271.                         cout<<"SORTAREA S-A EFECTUAT.";
  272.                    }
  273.                    else
  274.                         cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
  275.                    getch();
  276.                    system("cls");
  277.                    break;
  278.             case 3:system("cls");
  279.                    if (ok){
  280.                         sortcnume();
  281.                         cout<<"SORTAREA S-A EFECTUAT.";
  282.                    }
  283.                    else
  284.                         cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
  285.                    getch();
  286.                    system("cls");
  287.                    break;
  288.             case 4:system("cls");
  289.                    if (ok){
  290.                         sortdnume();
  291.                         cout<<"SORTAREA S-A EFECTUAT.";
  292.                    }
  293.                    else
  294.                         cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
  295.                    getch();
  296.                    system("cls");
  297.                    break;
  298.             case 5:system("cls");
  299.                    if (ok){
  300.                         sortcloc();
  301.                         cout<<"SORTAREA S-A EFECTUAT.";
  302.                    }
  303.                    else
  304.                         cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
  305.                    getch();
  306.                    system("cls");
  307.                     break;
  308.             case 6:system("cls");
  309.                    if (ok){
  310.                         sortdloc();
  311.                         cout<<"SORTAREA S-A EFECTUAT.";
  312.                    }
  313.                    else
  314.                         cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
  315.                    getch();
  316.                    system("cls");
  317.                     break;
  318.             case 7:system("cls");
  319.                    afisare(prim);
  320.                    getch();
  321.                    system("cls"); break;
  322.             case 8:return;
  323.         }
  324.     }
  325. }
  326. int nr_elemente(nod* &prim){
  327.     int counter = 0;
  328.     nod* c = prim;
  329.     while(c){
  330.         counter++;
  331.         c = c->urm;
  332.     }
  333.     return counter;
  334. }
  335. void stergere_nume_monument(char a[]){
  336.     nod* p,*q;
  337.     p=prim;
  338.     q=prim->urm;
  339.     while(q){
  340.         if(strcmp(q->info.nume,a)==0){
  341.             p->urm=q->urm;
  342.             delete(q);
  343.             q=p->urm;
  344.         }
  345.         else{
  346.             q=q->urm;
  347.             p=p->urm;
  348.         }
  349.     }
  350.     if(strcmp(prim->info.nume,a)==0){
  351.         q=prim;
  352.         prim=prim->urm;
  353.         delete(q);
  354.     }
  355. }
  356. void stergere_an_constructie(int x){
  357.     cin >> x;
  358.     nod* p,*q;
  359.     p=prim;
  360.     q=prim->urm;
  361.     while(q){
  362.         if(q->info.an == x){
  363.             p->urm=q->urm;
  364.             delete(q);
  365.             q=p->urm;
  366.         }
  367.         else{
  368.             q=q->urm;
  369.             p=p->urm;
  370.         }
  371.     }
  372.     if(prim->info.an == x){
  373.         q=prim;
  374.         prim=prim->urm;
  375.         delete(q);
  376.     }
  377. }
  378.  
  379. void meniustergere(){
  380.     int x,op,y,nr_nume_before, nr_nume_after,nr_an_before,nr_an_after;
  381.     char a[100];
  382.     while(op!=5){
  383.         cout<<"Alege optiunea:"<<endl<<endl;
  384.         cout<<"1. Stergere monument cu numele dat"<<endl;
  385.         cout<<"2. Stergere monument cu anul de constructie"<<endl;
  386.         cout<<"3. Afisare"<<endl;
  387.         cout<<"4. Iesire"<<endl;
  388.         cout<<endl<<"Alege optiunea:";
  389.         cin>>op;
  390.         cin.get();
  391.         switch(op){
  392.             case 1:system("cls");
  393.                    cout<<"Numele monumentului : ";
  394.                    cin.get(a,100);
  395.                    cin.get();
  396.                    nr_nume_before = nr_elemente(prim);
  397.                    stergere_nume_monument(a);
  398.                    nr_nume_after = nr_elemente(prim);
  399.                    if (nr_nume_before > nr_nume_after)
  400.                        cout<<"STERGEREA S-A EFECTUAT.";
  401.                    else
  402.                        cout <<"ELEMENTUL INTRODUS NU EXISTA.";
  403.                    getch();
  404.                    system("cls");
  405.                    break;
  406.             case 2:system("cls");
  407.                    nr_nume_before = nr_elemente(prim);
  408.                    stergere_an_constructie(y);
  409.                    nr_nume_after = nr_elemente(prim);
  410.                    if (nr_nume_before > nr_nume_after)
  411.                        cout<<"STERGEREA S-A EFECTUAT.";
  412.                    else
  413.                        cout <<"ELEMENTUL INTRODUS NU EXISTA.";
  414.                    getch();
  415.                    system("cls");
  416.                    break;
  417.             case 3:system("cls");
  418.                    afisare(prim);
  419.                    getch();
  420.                    system("cls");
  421.                    break;
  422.             case 4:return;
  423.         }
  424.     }
  425. }
  426. int main(){
  427.     prim=0;
  428.     ultim=0;
  429.     int op;
  430.     while (op!=7){
  431.         cout<<" 1.Creare/Adaugare"<<endl;
  432.         cout<<" 2.Afisare lista monumente"<<endl;
  433.         cout<<" 3.Minim dupa an constructie"<<endl;
  434.         cout<<" 4.Maxim dupa an constructie"<<endl;
  435.         cout<<" 5.Meniu sortare"<<endl;
  436.         cout<<" 6.Meniu stergere"<<endl;
  437.         cout<<" 7.Iesire"<<endl;
  438.         cout<<endl<<endl<<"Tastati optiunea : ";
  439.         cin>>op;
  440.         cin.get();
  441.         switch(op){
  442.         case 1: system("cls");
  443.                 cout << "Lista optiunilor la care datele se completeaza automat : " << endl << "-Muzeul de Arta" << endl << "-Muzeul Olteniei" << endl << "-Palatul de Justitie" << endl << "-Casa Vernescu" << endl << "-Casa Canciulescu" << endl << "-Casa Ferraru" << endl << "-Casa Dianu" << endl << "-Casa Zwillinger" << endl << "-Hanul Putureanu" << endl << "-Capela Sf. Maria" << endl << endl ; //<< endl <<
  444.                 adauga(prim,ultim);
  445.                 list_counter++;
  446.                 system("cls");
  447.                 break;
  448.         case 2: system("cls");
  449.                 afisare(prim);
  450.                 cout <<endl ;//<< list_counter;
  451.                 getch();
  452.                 system("cls");
  453.                 break;
  454.         case 3: system("cls");
  455.                 min(prim);
  456.                 getch();
  457.                 system("cls");
  458.                 break;
  459.         case 4: system("cls");
  460.                 max(prim);
  461.                 getch();
  462.                 system("cls");
  463.                 break;
  464.         case 5: system("cls");
  465.                 if (list_counter == 0)
  466.                     cout << "SORTAREA NU ESTE VALABILA DEOARECE LISTA NU ARE NICI UN ELEMENT."<< endl;
  467.                 else if (list_counter == 1)
  468.                     cout << "SORTAREA NU ESTE VALABILA DEOARECE LISTA ARE UN SINGUR ELEMENT."<< endl;
  469.                 else
  470.                     meniusortare();
  471.                 getch();
  472.                 system("cls");
  473.                 break;
  474.         case 6: system("cls");
  475.                 meniustergere();
  476.                 getch();
  477.                 system("cls");
  478.                 break;
  479.         case 7: return 0;
  480.         default:system("cls"); cout<<"OPTIUNE INCORECTA!!"<<endl<<endl;getch();system("cls");break;
  481.         }
  482.     }
  483. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement