Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- //#include <fstream>
- #include <iostream>
- #include <conio.h>
- #include <stdlib.h>
- #include <iomanip>
- #include <cstring>
- #pragma warning(disable : 4700)
- #pragma warning(disable : 4101)
- int ok = 0, list_counter = 0;
- using namespace std;
- ifstream f("in.txt");
- ofstream g("out.txt");
- struct elv{
- char nume[40];
- int an;
- char localizare[40];
- };
- struct nod{
- elv info;
- nod *urm;
- };
- nod * prim,* ultim;
- void adauga_console(nod *&prim, nod *&ultim){
- elv v;
- cout<<"Nume Monument:";*/f.get(v.nume,40);f.get();
- if ((strcmp(v.nume,"Muzeul Olteniei")==0)||(strcmp(v.nume,"muzeul olteniei")==0)){
- v.an = 1928;
- strcpy(v.localizare, "Str. Popa Sapca nr. 8");
- }
- else if((strcmp(v.nume,"Muzeul de Arta")==0)||(strcmp(v.nume,"muzeul de arta")==0)){
- v.an = 1908;
- strcpy(v.localizare, "Calea Unirii nr. 15");
- }
- else if((strcmp(v.nume,"Casa Vernescu")==0)||(strcmp(v.nume,"casa vernescu")==0)){
- v.an = 1910;
- strcpy(v.localizare, "Strada Mitropolit Firmilian nr. 20");
- }
- else if((strcmp(v.nume,"Palatul de Justitie")==0)||(strcmp(v.nume,"palatul de justitie")==0)){
- v.an = 1880;
- strcpy(v.localizare, "Str. Alexandru Ioan Cuza, nr. 13");
- }
- else if((strcmp(v.nume,"Casa Canciulescu")==0)||(strcmp(v.nume,"casa canciulescu")==0)){
- v.an = 1928;
- strcpy(v.localizare, "Str. Simion Barnutiu nr. 2");
- }
- else if((strcmp(v.nume,"Casa Ferraru")==0)||(strcmp(v.nume,"casa ferraru")==0)){
- v.an = 1914;
- strcpy(v.localizare, "Calea Unirii nr. 68");
- }
- else if((strcmp(v.nume,"Casa Dianu")==0)||(strcmp(v.nume,"casa dianu")==0)){
- v.an = 1905;
- strcpy(v.localizare, "Str. 24 Ianuarie nr. 4");
- }
- else if((strcmp(v.nume,"Capela Sf. Maria")==0)||(strcmp(v.nume,"capela sf. maria")==0)){
- v.an = 1900;
- strcpy(v.localizare, "Str. Enescu George");
- }
- else if((strcmp(v.nume,"Casa Zwillinger")==0)||(strcmp(v.nume,"casa zwillinger")==0)){
- v.an = 1900;
- strcpy(v.localizare, "Calea Unirii nr. 88");
- }
- else if((strcmp(v.nume,"Hanul Putureanu")==0)||(strcmp(v.nume,"hanul putureanu")==0)){
- v.an = 1887;
- strcpy(v.localizare, "Str. Matei Basarab nr. 9");
- }
- else {
- cout << "Nu ati introdus un monument de pe lista. Va rugam introduceti urmatoarele : " << endl;
- cout << "-Introduceti anul constructiei :"; >> v.an;
- f.get();
- cout << "-Introduceti locatia : ";f.get(v.localizare,40);
- f.get();
- //}
- nod* p;
- if((prim==ultim)&&(prim==0)){
- prim=ultim=new nod;
- prim->info=v;
- prim->urm=0;
- }
- else {
- p=new nod;
- p->info=v;
- ultim->urm=p;
- ultim=p;
- ultim->urm=0;
- }
- ok = 1;
- }
- void adauga_fisier(nod *&prim, nod *&ultim){
- elv v;
- /*cout<<"Nume Monument:";*/f.get(v.nume,40);f.get();
- /*if ((strcmp(v.nume,"Muzeul Olteniei")==0)||(strcmp(v.nume,"muzeul olteniei")==0)){
- v.an = 1928;
- strcpy(v.localizare, "Str. Popa Sapca nr. 8");
- }
- else if((strcmp(v.nume,"Muzeul de Arta")==0)||(strcmp(v.nume,"muzeul de arta")==0)){
- v.an = 1908;
- strcpy(v.localizare, "Calea Unirii nr. 15");
- }
- else if((strcmp(v.nume,"Casa Vernescu")==0)||(strcmp(v.nume,"casa vernescu")==0)){
- v.an = 1910;
- strcpy(v.localizare, "Strada Mitropolit Firmilian nr. 20");
- }
- else if((strcmp(v.nume,"Palatul de Justitie")==0)||(strcmp(v.nume,"palatul de justitie")==0)){
- v.an = 1880;
- strcpy(v.localizare, "Str. Alexandru Ioan Cuza, nr. 13");
- }
- else if((strcmp(v.nume,"Casa Canciulescu")==0)||(strcmp(v.nume,"casa canciulescu")==0)){
- v.an = 1928;
- strcpy(v.localizare, "Str. Simion Barnutiu nr. 2");
- }
- else if((strcmp(v.nume,"Casa Ferraru")==0)||(strcmp(v.nume,"casa ferraru")==0)){
- v.an = 1914;
- strcpy(v.localizare, "Calea Unirii nr. 68");
- }
- else if((strcmp(v.nume,"Casa Dianu")==0)||(strcmp(v.nume,"casa dianu")==0)){
- v.an = 1905;
- strcpy(v.localizare, "Str. 24 Ianuarie nr. 4");
- }
- else if((strcmp(v.nume,"Capela Sf. Maria")==0)||(strcmp(v.nume,"capela sf. maria")==0)){
- v.an = 1900;
- strcpy(v.localizare, "Str. Enescu George");
- }
- else if((strcmp(v.nume,"Casa Zwillinger")==0)||(strcmp(v.nume,"casa zwillinger")==0)){
- v.an = 1900;
- strcpy(v.localizare, "Calea Unirii nr. 88");
- }
- else if((strcmp(v.nume,"Hanul Putureanu")==0)||(strcmp(v.nume,"hanul putureanu")==0)){
- v.an = 1887;
- strcpy(v.localizare, "Str. Matei Basarab nr. 9");
- }
- else {*/
- //cout << "Nu ati introdus un monument de pe lista. Va rugam introduceti urmatoarele : " << endl;
- /*cout << "-Introduceti anul constructiei :";*/f >> v.an;
- f.get();
- /*cout << "-Introduceti locatia : ";*/f.get(v.localizare,40);
- f.get();
- //}
- nod* p;
- if((prim==ultim)&&(prim==0)){
- prim=ultim=new nod;
- prim->info=v;
- prim->urm=0;
- }
- else {
- p=new nod;
- p->info=v;
- ultim->urm=p;
- ultim=p;
- ultim->urm=0;
- }
- ok = 1;
- }
- void meniu_citire(){
- int k;
- k = 0;
- while(k!=3){
- cout << "Alegeti : " << endl << endl;
- cout << "1. Adaugare fisier" << endl;
- cout << "2. Adaugare individuala consola" << endl;
- cout << "3. Iesire"<<endl;
- cin >> k;
- switch (k){
- case 1: system("cls");
- adauga_fisier(prim,ultim);
- cout << "Adaugare fisier finalizata." << endl;
- getch();
- break;
- case 2: system("cls");
- adauga_console(prim,ultim);
- cout << "Adaugare consola finalizata." << endl;
- getch();
- break;
- case 3: return;
- }
- }
- }
- void afisare(nod *prim){
- nod* p;
- //int i=1;
- p=prim;
- //cout<<" "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<" An"<<left<<' '<<"Localizare"<<endl<<endl;
- while(p){
- /*if (i < 10)
- cout<<i<<"."<<' ';
- else
- cout << i << ".";*/
- //cout<<left<<" "<<setw(20)<<p->info.nume <<right<<setw(10)<<p->info.an<<" "<<left<<setw(30)<<p->info.localizare<<endl;
- g << p->info.nume << endl << p->info.an << endl <<p->info.localizare << endl;
- p=p->urm;
- //i++;
- }}
- void min(nod *prim){
- nod *p;
- double min=9000000;
- p=prim;
- if (p == 0){
- cout << "Nu ati introdus nimic" << endl;
- return;
- }
- else {
- while(p){
- if(p->info.an<min)min=p->info.an;
- p=p->urm;
- }
- cout<<" "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<" An"<<left<<' '<<"Localizare"<<endl<<endl;
- p=prim;
- while(p){
- if(p->info.an==min)
- g << p->info.nume << endl << p->info.an << endl << p->info.localizare << endl;
- //cout<<left<<" "<<setw(20)<<p->info.nume<<right<<setw(10)<<p->info.an<<" "<<left<<setw(30)<<p->info.localizare<<endl;
- p=p->urm;
- }
- }
- }
- void max(nod *prim){
- nod *p;
- double max=-1;
- p=prim;
- if (p == 0){
- cout << "Nu ati introdus nimic" << endl;
- return;
- }
- else {
- while(p){
- if(p->info.an>max)max=p->info.an;
- p=p->urm;
- }
- //cout<<" "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<" An"<<left<<' '<<"Localizare"<<endl<<endl;
- p=prim;
- while(p){
- if(p->info.an==max)
- g << p->info.nume << endl << p->info.an << endl << p->info.localizare << endl;
- //cout<<left<<" "<<setw(20)<<p->info.nume<<right<<setw(10)<<p->info.an<<" "<<left<<setw(30)<<p->info.localizare<<endl;
- p=p->urm;
- }
- }
- }
- void sortcnume(){
- elv x;
- int k=-1;
- nod *p;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(strcmp(p->info.nume,p->urm->info.nume)==1){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;}
- }
- }
- void sortdnume(){
- elv x;
- int k=-1;
- nod *p;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(strcmp(p->info.nume,p->urm->info.nume)==-1){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;}
- }
- }
- void sortcloc(){
- elv x;
- int k=-1;
- nod *p;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(strcmp(p->info.localizare,p->urm->info.localizare)==1){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;}
- }
- }
- void sortdloc(){
- elv x;
- int k=-1;
- nod *p;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(strcmp(p->info.localizare,p->urm->info.localizare)==-1){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;}
- }
- }
- void sortcan(){
- nod *p;
- int k =-1;
- elv x;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(p->info.an>p->urm->info.an){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;
- }
- }
- }
- void sortdan(){
- nod *p;
- int k=-1;
- elv x;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(p->info.an<p->urm->info.an){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;
- }
- }
- }
- void meniusortare(){
- int k;
- k = 0;
- while(k!=7){
- cout<<"Alege sortarea:"<<endl<<endl;
- cout<<"1. Sortare crescatoare an constructie"<<endl;
- cout<<"2. Sortare descrescatoare constructie"<<endl;
- cout<<"3. Sortare alfabetica dupa numele monumentului"<<endl;
- cout<<"4. Sortare invers alfabetica dupa numele monumentului"<<endl;
- cout<<"5. Sortare alfabetica localizare"<<endl;
- cout<<"6. Sortare invers alfabetica localizare"<<endl;
- cout<<"7. Iesire"<<endl;
- cout<<endl<<"Alege optiunea:";
- cin>>k;
- switch(k){
- case 1:system("cls");
- if (ok){
- sortcan();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else if (( ok )&& ( list_counter == 1))
- cout <<"LISTA ARE UN SINGUR ELEMENT, SORTAREA ESTE NESEMNIFICATIVA.";
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 2:system("cls");
- if (ok){
- sortdan();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 3:system("cls");
- if (ok){
- sortcnume();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 4:system("cls");
- if (ok){
- sortdnume();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 5:system("cls");
- if (ok){
- sortcloc();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- break;
- case 6:system("cls");
- if (ok){
- sortdloc();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- /*case 7:system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- //_getch();
- system("cls"); break;*/
- case 7:return;
- }
- }
- }
- int nr_elemente(nod* &prim){
- int counter = 0;
- nod* c = prim;
- while(c){
- counter++;
- c = c->urm;
- }
- return counter;
- }
- void stergere_nume_monument(char a[]){
- nod* p,*q;
- p=prim;
- q=prim->urm;
- while(q){
- if(strcmp(q->info.nume,a)==0){
- p->urm=q->urm;
- delete(q);
- q=p->urm;
- }
- else{
- q=q->urm;
- p=p->urm;
- }
- }
- ultim = q;
- if(strcmp(prim->info.nume,a)==0){
- q=prim;
- prim=prim->urm;
- delete(q);
- }
- }
- void stergere_an_constructie(int x){
- nod* p,*q;
- p=prim;
- q=prim->urm;
- while(q){
- if(q->info.an == x){
- p->urm=q->urm;
- delete(q);
- q=p->urm;
- }
- else{
- q=q->urm;
- p=p->urm;
- }
- }
- ultim = q;
- if(prim->info.an == x){
- q=prim;
- prim=prim->urm;
- delete(q);
- }
- }
- void meniustergere(){
- int x,op,y,nr_nume_before, nr_nume_after,nr_an_before,nr_an_after;
- char a[100];
- op = 0;
- while(op!=4){
- cout<<"Alege optiunea:"<<endl<<endl;
- cout<<"1. Stergere monument cu numele dat"<<endl;
- cout<<"2. Stergere monument cu anul de constructie"<<endl;
- //cout<<"3. Afisare"<<endl;
- cout<<"4. Iesire"<<endl;
- cout<<endl<<"Alege optiunea:";
- cin>>op;
- cin.get();
- switch(op){
- case 1:system("cls");
- cout<<"Numele monumentului : ";
- cin.get(a,100);
- cin.get();
- nr_nume_before = nr_elemente(prim);
- stergere_nume_monument(a);
- nr_nume_after = nr_elemente(prim);
- if (nr_nume_before > nr_nume_after)
- cout<<"STERGEREA S-A EFECTUAT.";
- else
- cout <<"ELEMENTUL INTRODUS NU EXISTA.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 2:system("cls");
- cout << "Anul constructiei : ";
- nr_nume_before = nr_elemente(prim);
- cin >> y;
- stergere_an_constructie(y);
- nr_nume_after = nr_elemente(prim);
- if (nr_nume_before > nr_nume_after)
- cout<<"STERGEREA S-A EFECTUAT.";
- else
- cout <<"ELEMENTUL INTRODUS NU EXISTA.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- /*case 3:system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- //_getch();
- system("cls");
- break;*/
- case 3:return;
- }
- }
- }
- int main(){
- prim=0;
- ultim=0;
- int op;
- op = 0;
- while (op!=7){
- cout<<" 1.Creare/Adaugare"<<endl;
- cout<<" 2.Afisare lista monumente"<<endl;
- cout<<" 3.Minim dupa an constructie"<<endl;
- cout<<" 4.Maxim dupa an constructie"<<endl;
- cout<<" 5.Meniu sortare"<<endl;
- cout<<" 6.Meniu stergere"<<endl;
- cout<<" 7.Iesire"<<endl;
- cout<<endl<<endl<<"Tastati optiunea : ";
- cin>>op;
- cin.get();
- switch(op){
- case 1: system("cls");
- 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 ;
- //adauga_fisier(prim,ultim);
- while(!f.eof()){
- list_counter++;
- adauga_fisier(prim,ultim);
- }
- system("cls");
- break;
- case 2: system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 3: system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- min(prim);
- _getch();
- system("cls");
- g.close();
- break;
- case 4: system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- max(prim);
- _getch();
- system("cls");
- g.close();
- break;
- case 5: system("cls");
- if (list_counter == 0)
- cout << "SORTAREA NU ESTE VALABILA DEOARECE LISTA NU ARE NICI UN ELEMENT."<< endl;
- else if (list_counter == 1)
- cout << "SORTAREA NU ESTE VALABILA DEOARECE LISTA ARE UN SINGUR ELEMENT."<< endl;
- else
- meniusortare();
- _getch();
- system("cls");
- break;
- case 6: system("cls");
- if (list_counter == 0)
- cout << "SORTAREA NU ESTE VALABILA DEOARECE LISTA NU ARE NICI UN ELEMENT."<< endl;
- else
- meniustergere();
- _getch();
- system("cls");
- break;
- case 7: f.close();
- g.close();
- remove("in.txt");
- rename("out.txt","in.txt");
- return 0;
- default:system("cls"); cout<<"OPTIUNE INCORECTA!!"<<endl<<endl;_getch();system("cls");break;
- }
- }
- }
- #include <bits/stdc++.h>
- //#include <fstream>
- #include <iostream>
- #include <conio.h>
- #include <stdlib.h>
- #include <iomanip>
- #include <cstring>
- #pragma warning(disable : 4700)
- #pragma warning(disable : 4101)
- int ok = 0, list_counter = 0;
- using namespace std;
- ifstream f("in.txt");
- ofstream g("out.txt");
- struct elv{
- char nume[40];
- int an;
- char localizare[40];
- };
- struct nod{
- elv info;
- nod *urm;
- };
- nod * prim,* ultim;
- void adauga_console(nod *&prim, nod *&ultim){
- elv v;
- cout<<"Nume Monument:";*/f.get(v.nume,40);f.get();
- if ((strcmp(v.nume,"Muzeul Olteniei")==0)||(strcmp(v.nume,"muzeul olteniei")==0)){
- v.an = 1928;
- strcpy(v.localizare, "Str. Popa Sapca nr. 8");
- }
- else if((strcmp(v.nume,"Muzeul de Arta")==0)||(strcmp(v.nume,"muzeul de arta")==0)){
- v.an = 1908;
- strcpy(v.localizare, "Calea Unirii nr. 15");
- }
- else if((strcmp(v.nume,"Casa Vernescu")==0)||(strcmp(v.nume,"casa vernescu")==0)){
- v.an = 1910;
- strcpy(v.localizare, "Strada Mitropolit Firmilian nr. 20");
- }
- else if((strcmp(v.nume,"Palatul de Justitie")==0)||(strcmp(v.nume,"palatul de justitie")==0)){
- v.an = 1880;
- strcpy(v.localizare, "Str. Alexandru Ioan Cuza, nr. 13");
- }
- else if((strcmp(v.nume,"Casa Canciulescu")==0)||(strcmp(v.nume,"casa canciulescu")==0)){
- v.an = 1928;
- strcpy(v.localizare, "Str. Simion Barnutiu nr. 2");
- }
- else if((strcmp(v.nume,"Casa Ferraru")==0)||(strcmp(v.nume,"casa ferraru")==0)){
- v.an = 1914;
- strcpy(v.localizare, "Calea Unirii nr. 68");
- }
- else if((strcmp(v.nume,"Casa Dianu")==0)||(strcmp(v.nume,"casa dianu")==0)){
- v.an = 1905;
- strcpy(v.localizare, "Str. 24 Ianuarie nr. 4");
- }
- else if((strcmp(v.nume,"Capela Sf. Maria")==0)||(strcmp(v.nume,"capela sf. maria")==0)){
- v.an = 1900;
- strcpy(v.localizare, "Str. Enescu George");
- }
- else if((strcmp(v.nume,"Casa Zwillinger")==0)||(strcmp(v.nume,"casa zwillinger")==0)){
- v.an = 1900;
- strcpy(v.localizare, "Calea Unirii nr. 88");
- }
- else if((strcmp(v.nume,"Hanul Putureanu")==0)||(strcmp(v.nume,"hanul putureanu")==0)){
- v.an = 1887;
- strcpy(v.localizare, "Str. Matei Basarab nr. 9");
- }
- else {
- cout << "Nu ati introdus un monument de pe lista. Va rugam introduceti urmatoarele : " << endl;
- cout << "-Introduceti anul constructiei :"; >> v.an;
- f.get();
- cout << "-Introduceti locatia : ";f.get(v.localizare,40);
- f.get();
- //}
- nod* p;
- if((prim==ultim)&&(prim==0)){
- prim=ultim=new nod;
- prim->info=v;
- prim->urm=0;
- }
- else {
- p=new nod;
- p->info=v;
- ultim->urm=p;
- ultim=p;
- ultim->urm=0;
- }
- ok = 1;
- }
- void adauga_fisier(nod *&prim, nod *&ultim){
- elv v;
- /*cout<<"Nume Monument:";*/f.get(v.nume,40);f.get();
- /*if ((strcmp(v.nume,"Muzeul Olteniei")==0)||(strcmp(v.nume,"muzeul olteniei")==0)){
- v.an = 1928;
- strcpy(v.localizare, "Str. Popa Sapca nr. 8");
- }
- else if((strcmp(v.nume,"Muzeul de Arta")==0)||(strcmp(v.nume,"muzeul de arta")==0)){
- v.an = 1908;
- strcpy(v.localizare, "Calea Unirii nr. 15");
- }
- else if((strcmp(v.nume,"Casa Vernescu")==0)||(strcmp(v.nume,"casa vernescu")==0)){
- v.an = 1910;
- strcpy(v.localizare, "Strada Mitropolit Firmilian nr. 20");
- }
- else if((strcmp(v.nume,"Palatul de Justitie")==0)||(strcmp(v.nume,"palatul de justitie")==0)){
- v.an = 1880;
- strcpy(v.localizare, "Str. Alexandru Ioan Cuza, nr. 13");
- }
- else if((strcmp(v.nume,"Casa Canciulescu")==0)||(strcmp(v.nume,"casa canciulescu")==0)){
- v.an = 1928;
- strcpy(v.localizare, "Str. Simion Barnutiu nr. 2");
- }
- else if((strcmp(v.nume,"Casa Ferraru")==0)||(strcmp(v.nume,"casa ferraru")==0)){
- v.an = 1914;
- strcpy(v.localizare, "Calea Unirii nr. 68");
- }
- else if((strcmp(v.nume,"Casa Dianu")==0)||(strcmp(v.nume,"casa dianu")==0)){
- v.an = 1905;
- strcpy(v.localizare, "Str. 24 Ianuarie nr. 4");
- }
- else if((strcmp(v.nume,"Capela Sf. Maria")==0)||(strcmp(v.nume,"capela sf. maria")==0)){
- v.an = 1900;
- strcpy(v.localizare, "Str. Enescu George");
- }
- else if((strcmp(v.nume,"Casa Zwillinger")==0)||(strcmp(v.nume,"casa zwillinger")==0)){
- v.an = 1900;
- strcpy(v.localizare, "Calea Unirii nr. 88");
- }
- else if((strcmp(v.nume,"Hanul Putureanu")==0)||(strcmp(v.nume,"hanul putureanu")==0)){
- v.an = 1887;
- strcpy(v.localizare, "Str. Matei Basarab nr. 9");
- }
- else {*/
- //cout << "Nu ati introdus un monument de pe lista. Va rugam introduceti urmatoarele : " << endl;
- /*cout << "-Introduceti anul constructiei :";*/f >> v.an;
- f.get();
- /*cout << "-Introduceti locatia : ";*/f.get(v.localizare,40);
- f.get();
- //}
- nod* p;
- if((prim==ultim)&&(prim==0)){
- prim=ultim=new nod;
- prim->info=v;
- prim->urm=0;
- }
- else {
- p=new nod;
- p->info=v;
- ultim->urm=p;
- ultim=p;
- ultim->urm=0;
- }
- ok = 1;
- }
- void meniu_citire(){
- int k;
- k = 0;
- while(k!=3){
- cout << "Alegeti : " << endl << endl;
- cout << "1. Adaugare fisier" << endl;
- cout << "2. Adaugare individuala consola" << endl;
- cout << "3. Iesire"<<endl;
- cin >> k;
- switch (k){
- case 1: system("cls");
- adauga_fisier(prim,ultim);
- cout << "Adaugare fisier finalizata." << endl;
- getch();
- break;
- case 2: system("cls");
- adauga_console(prim,ultim);
- cout << "Adaugare consola finalizata." << endl;
- getch();
- break;
- case 3: return;
- }
- }
- }
- void afisare(nod *prim){
- nod* p;
- //int i=1;
- p=prim;
- //cout<<" "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<" An"<<left<<' '<<"Localizare"<<endl<<endl;
- while(p){
- /*if (i < 10)
- cout<<i<<"."<<' ';
- else
- cout << i << ".";*/
- //cout<<left<<" "<<setw(20)<<p->info.nume <<right<<setw(10)<<p->info.an<<" "<<left<<setw(30)<<p->info.localizare<<endl;
- g << p->info.nume << endl << p->info.an << endl <<p->info.localizare << endl;
- p=p->urm;
- //i++;
- }}
- void min(nod *prim){
- nod *p;
- double min=9000000;
- p=prim;
- if (p == 0){
- cout << "Nu ati introdus nimic" << endl;
- return;
- }
- else {
- while(p){
- if(p->info.an<min)min=p->info.an;
- p=p->urm;
- }
- cout<<" "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<" An"<<left<<' '<<"Localizare"<<endl<<endl;
- p=prim;
- while(p){
- if(p->info.an==min)
- g << p->info.nume << endl << p->info.an << endl << p->info.localizare << endl;
- //cout<<left<<" "<<setw(20)<<p->info.nume<<right<<setw(10)<<p->info.an<<" "<<left<<setw(30)<<p->info.localizare<<endl;
- p=p->urm;
- }
- }
- }
- void max(nod *prim){
- nod *p;
- double max=-1;
- p=prim;
- if (p == 0){
- cout << "Nu ati introdus nimic" << endl;
- return;
- }
- else {
- while(p){
- if(p->info.an>max)max=p->info.an;
- p=p->urm;
- }
- //cout<<" "<<left<<setw(20)<<"Numele monumentului"<<' '<<left<<setw(20)<<" An"<<left<<' '<<"Localizare"<<endl<<endl;
- p=prim;
- while(p){
- if(p->info.an==max)
- g << p->info.nume << endl << p->info.an << endl << p->info.localizare << endl;
- //cout<<left<<" "<<setw(20)<<p->info.nume<<right<<setw(10)<<p->info.an<<" "<<left<<setw(30)<<p->info.localizare<<endl;
- p=p->urm;
- }
- }
- }
- void sortcnume(){
- elv x;
- int k=-1;
- nod *p;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(strcmp(p->info.nume,p->urm->info.nume)==1){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;}
- }
- }
- void sortdnume(){
- elv x;
- int k=-1;
- nod *p;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(strcmp(p->info.nume,p->urm->info.nume)==-1){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;}
- }
- }
- void sortcloc(){
- elv x;
- int k=-1;
- nod *p;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(strcmp(p->info.localizare,p->urm->info.localizare)==1){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;}
- }
- }
- void sortdloc(){
- elv x;
- int k=-1;
- nod *p;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(strcmp(p->info.localizare,p->urm->info.localizare)==-1){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;}
- }
- }
- void sortcan(){
- nod *p;
- int k =-1;
- elv x;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(p->info.an>p->urm->info.an){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;
- }
- }
- }
- void sortdan(){
- nod *p;
- int k=-1;
- elv x;
- while(k){
- p=prim;
- k=0;
- while(p->urm){
- if(p->info.an<p->urm->info.an){
- x=p->info;
- p->info=p->urm->info;
- p->urm->info=x;
- k=1;
- }
- p=p->urm;
- }
- }
- }
- void meniusortare(){
- int k;
- k = 0;
- while(k!=7){
- cout<<"Alege sortarea:"<<endl<<endl;
- cout<<"1. Sortare crescatoare an constructie"<<endl;
- cout<<"2. Sortare descrescatoare constructie"<<endl;
- cout<<"3. Sortare alfabetica dupa numele monumentului"<<endl;
- cout<<"4. Sortare invers alfabetica dupa numele monumentului"<<endl;
- cout<<"5. Sortare alfabetica localizare"<<endl;
- cout<<"6. Sortare invers alfabetica localizare"<<endl;
- cout<<"7. Iesire"<<endl;
- cout<<endl<<"Alege optiunea:";
- cin>>k;
- switch(k){
- case 1:system("cls");
- if (ok){
- sortcan();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else if (( ok )&& ( list_counter == 1))
- cout <<"LISTA ARE UN SINGUR ELEMENT, SORTAREA ESTE NESEMNIFICATIVA.";
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 2:system("cls");
- if (ok){
- sortdan();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 3:system("cls");
- if (ok){
- sortcnume();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 4:system("cls");
- if (ok){
- sortdnume();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 5:system("cls");
- if (ok){
- sortcloc();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- break;
- case 6:system("cls");
- if (ok){
- sortdloc();
- cout<<"SORTAREA S-A EFECTUAT.";
- }
- else
- cout <<"DEOARECE LISTA NU ARE ELEMENTE, SORTAREA NU S-A EFECTUAT.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- /*case 7:system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- //_getch();
- system("cls"); break;*/
- case 7:return;
- }
- }
- }
- int nr_elemente(nod* &prim){
- int counter = 0;
- nod* c = prim;
- while(c){
- counter++;
- c = c->urm;
- }
- return counter;
- }
- void stergere_nume_monument(char a[]){
- nod* p,*q;
- p=prim;
- q=prim->urm;
- while(q){
- if(strcmp(q->info.nume,a)==0){
- p->urm=q->urm;
- delete(q);
- q=p->urm;
- }
- else{
- q=q->urm;
- p=p->urm;
- }
- }
- ultim = q;
- if(strcmp(prim->info.nume,a)==0){
- q=prim;
- prim=prim->urm;
- delete(q);
- }
- }
- void stergere_an_constructie(int x){
- nod* p,*q;
- p=prim;
- q=prim->urm;
- while(q){
- if(q->info.an == x){
- p->urm=q->urm;
- delete(q);
- q=p->urm;
- }
- else{
- q=q->urm;
- p=p->urm;
- }
- }
- ultim = q;
- if(prim->info.an == x){
- q=prim;
- prim=prim->urm;
- delete(q);
- }
- }
- void meniustergere(){
- int x,op,y,nr_nume_before, nr_nume_after,nr_an_before,nr_an_after;
- char a[100];
- op = 0;
- while(op!=4){
- cout<<"Alege optiunea:"<<endl<<endl;
- cout<<"1. Stergere monument cu numele dat"<<endl;
- cout<<"2. Stergere monument cu anul de constructie"<<endl;
- //cout<<"3. Afisare"<<endl;
- cout<<"4. Iesire"<<endl;
- cout<<endl<<"Alege optiunea:";
- cin>>op;
- cin.get();
- switch(op){
- case 1:system("cls");
- cout<<"Numele monumentului : ";
- cin.get(a,100);
- cin.get();
- nr_nume_before = nr_elemente(prim);
- stergere_nume_monument(a);
- nr_nume_after = nr_elemente(prim);
- if (nr_nume_before > nr_nume_after)
- cout<<"STERGEREA S-A EFECTUAT.";
- else
- cout <<"ELEMENTUL INTRODUS NU EXISTA.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 2:system("cls");
- cout << "Anul constructiei : ";
- nr_nume_before = nr_elemente(prim);
- cin >> y;
- stergere_an_constructie(y);
- nr_nume_after = nr_elemente(prim);
- if (nr_nume_before > nr_nume_after)
- cout<<"STERGEREA S-A EFECTUAT.";
- else
- cout <<"ELEMENTUL INTRODUS NU EXISTA.";
- _getch();
- system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- /*case 3:system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- //_getch();
- system("cls");
- break;*/
- case 3:return;
- }
- }
- }
- int main(){
- prim=0;
- ultim=0;
- int op;
- op = 0;
- while (op!=7){
- cout<<" 1.Creare/Adaugare"<<endl;
- cout<<" 2.Afisare lista monumente"<<endl;
- cout<<" 3.Minim dupa an constructie"<<endl;
- cout<<" 4.Maxim dupa an constructie"<<endl;
- cout<<" 5.Meniu sortare"<<endl;
- cout<<" 6.Meniu stergere"<<endl;
- cout<<" 7.Iesire"<<endl;
- cout<<endl<<endl<<"Tastati optiunea : ";
- cin>>op;
- cin.get();
- switch(op){
- case 1: system("cls");
- 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 ;
- //adauga_fisier(prim,ultim);
- while(!f.eof()){
- list_counter++;
- adauga_fisier(prim,ultim);
- }
- system("cls");
- break;
- case 2: system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- afisare(prim);
- system("cls");
- g.close();
- break;
- case 3: system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- min(prim);
- _getch();
- system("cls");
- g.close();
- break;
- case 4: system("cls");
- g.open("out.txt", ofstream::out | ofstream::trunc);
- max(prim);
- _getch();
- system("cls");
- g.close();
- break;
- case 5: system("cls");
- if (list_counter == 0)
- cout << "SORTAREA NU ESTE VALABILA DEOARECE LISTA NU ARE NICI UN ELEMENT."<< endl;
- else if (list_counter == 1)
- cout << "SORTAREA NU ESTE VALABILA DEOARECE LISTA ARE UN SINGUR ELEMENT."<< endl;
- else
- meniusortare();
- _getch();
- system("cls");
- break;
- case 6: system("cls");
- if (list_counter == 0)
- cout << "SORTAREA NU ESTE VALABILA DEOARECE LISTA NU ARE NICI UN ELEMENT."<< endl;
- else
- meniustergere();
- _getch();
- system("cls");
- break;
- case 7: f.close();
- g.close();
- remove("in.txt");
- rename("out.txt","in.txt");
- return 0;
- default:system("cls"); cout<<"OPTIUNE INCORECTA!!"<<endl<<endl;_getch();system("cls");break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement