Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <stdlib.h>
- #include <iomanip>
- #include <string.h>
- using namespace std;
- struct nastere{
- char zi1[20];
- char zi2[20];
- char luna1[20];
- char luna2[20];
- int an1,an2;
- };
- struct ingineri{
- char nume[40];
- int ani;
- char inventii[340];
- nastere datas;
- };
- struct nod{
- ingineri data;
- nod *next;
- };
- int ok=0,Counter=0;
- nod * prim,* ultim;
- nod * pprim;
- /*void adaugSentinel(nod* &prim){
- nod* pprim=new nod;
- pprim->next=prim;
- }*/
- void adauga(nod *&prim, nod *&ultim){
- cout<<"lista ingineri : "<<endl<<endl;
- cout<<"-Ion Agarbiceanu"<<endl;
- cout<<"-Ana Aslan"<<endl;
- cout<<"-Victor Babes"<<endl;
- cout<<"-Ion St. Basgan"<<endl;
- cout<<"-Petrache Poenaru"<<endl;
- cout<<"-Ion Cantacuzino"<<endl;
- cout<<"-Traian Vuia"<<endl;
- cout<<"-Henri Coanda"<<endl;
- cout<<"-Grigore Antipa"<<endl;
- cout<<"-Stefan Odobleja"<<endl;
- cout<<"-Nicolae Vasilescu-Karpen"<<endl;
- cout<<"-Teodor Dragu"<<endl<<endl;
- cout<<"**P.S: abreviations of the prelisted names such as Ana Aslan->ana aslan work as long as the names start with the same lowercase/uppercase letter!**"<<endl;
- cout<<endl<<endl;
- ingineri v;
- cout<<"Nume inginer roman: ";cin.getline(v.nume,sizeof(v.nume));
- if((strcmp(v.nume,"Ion Agarbiceanu")==0)||(strcmp(v.nume,"ion agarbiceanu")==0)){
- strcpy(v.inventii,"tehnica laserului si luminia polarizata ");
- //strcpy(v.data_nasterii_si_decedarii,"n-12.09.1882 d-28.05.1963");
- v.ani=80;
- v.datas.an1=1882;
- v.datas.an2=1963;
- strcpy(v.datas.luna1,"09");
- strcpy(v.datas.luna2,"05");
- strcpy(v.datas.zi1,"12");
- strcpy(v.datas.zi2,"28");
- }
- else if((strcmp(v.nume,"Ana Aslan")==0)||(strcmp(v.nume,"ana aslan")==0)){
- strcpy(v.inventii,"vitamina H3 si produsul geriatric Aslavital");
- //strcpy(v.data_nasterii_si_decedarii,"n-01.01.1897 d-20.05.1988");
- v.ani=91;
- v.datas.an1=1897;
- v.datas.an2=1988;
- strcpy(v.datas.luna1,"01");
- strcpy(v.datas.luna2,"05");
- strcpy(v.datas.zi1,"01");
- strcpy(v.datas.zi2,"20");
- }
- else if((strcmp(v.nume,"Victor Babes")==0)||(strcmp(v.nume,"victor babes")==0)){
- strcpy(v.inventii,"tratamentul pelagrei si a rabiei");
- //strcpy(v.data_nasterii_si_decedarii,"n-04.07.1854 d-19.10.1926");
- v.ani=72;
- v.datas.an1=1854;
- v.datas.an2=1926;
- strcpy(v.datas.luna1,"07");
- strcpy(v.datas.luna2,"10");
- strcpy(v.datas.zi1,"04");
- strcpy(v.datas.zi2,"19");
- }
- else if((strcmp(v.nume,"Ion St. Basgan")==0)||(strcmp(v.nume,"ion st. basgan")==0)||(strcmp(v.nume,"ion basgan")==0)||(strcmp(v.nume,"ion st basgan")==0)){
- strcpy(v.inventii,"metoda pentru imbunatatirea randamentului si perfectionarea forajului rotativ");
- //strcpy(v.data_nasterii_si_decedarii,"n-24.06.1902 d-15.12.1982");
- v.ani=79;
- v.datas.an1=1902;
- v.datas.an2=1982;
- strcpy(v.datas.luna1,"06");
- strcpy(v.datas.luna2,"12");
- strcpy(v.datas.zi1,"24");
- strcpy(v.datas.zi2,"15");
- }
- else if((strcmp(v.nume,"Petrache Poenaru")==0)||(strcmp(v.nume,"petrache poenaru")==0)){
- strcpy(v.inventii,"stiloul");
- //strcpy(v.data_nasterii_si_decedarii,"n-10.01.1799 d-02.10.1875");
- v.ani=76;
- v.datas.an1=1799;
- v.datas.an2=1875;
- strcpy(v.datas.luna1,"01");
- strcpy(v.datas.luna2,"10");
- strcpy(v.datas.zi1,"10");
- strcpy(v.datas.zi2,"02");
- }
- else if((strcmp(v.nume,"Ion Cantacuzino")==0)||(strcmp(v.nume,"ion cantacuzino")==0)){
- strcpy(v.inventii,"vaccinul antiholeric ");
- //strcpy(v.data_nasterii_si_decedarii,"n-25.11.1863 d-14.01.1934");
- v.ani=71;
- v.datas.an1=1863;
- v.datas.an2=1934;
- strcpy(v.datas.luna1,"11");
- strcpy(v.datas.luna2,"01");
- strcpy(v.datas.zi1,"25");
- strcpy(v.datas.zi2,"14");
- }
- else if((strcmp(v.nume,"Traian Vuia")==0)||(strcmp(v.nume,"traian vuia")==0)){
- strcpy(v.inventii,"inventator al aviatiei mondiale care a zburat primul avion autopropulsat");
- //strcpy(v.data_nasterii_si_decedarii,"n-17.08.1872 d-03.09.1950");
- v.ani=78;
- v.datas.an1=1872;
- v.datas.an2=1950;
- strcpy(v.datas.luna1,"08");
- strcpy(v.datas.luna2,"09");
- strcpy(v.datas.zi1,"17");
- strcpy(v.datas.zi2,"03");
- }
- else if((strcmp(v.nume,"Henri Coanda")==0)||(strcmp(v.nume,"henri coanda")==0)){
- strcpy(v.inventii,"inventator al avionului cu reactie ");
- //strcpy(v.data_nasterii_si_decedarii,"n-07.06.1886 d-25.11.1972");
- v.ani=86;
- v.datas.an1=1886;
- v.datas.an2=1972;
- strcpy(v.datas.luna1,"06");
- strcpy(v.datas.luna2,"11");
- strcpy(v.datas.zi1,"07");
- strcpy(v.datas.zi2,"25");
- }
- else if((strcmp(v.nume,"Grigore Antipa")==0)||(strcmp(v.nume,"grigore antipa")==0)){
- strcpy(v.inventii,"inventatorul dioramei ");
- //strcpy(v.data_nasterii_si_decedarii,"n-27.11.1867 d-09.03.1944");
- v.ani=77;
- v.datas.an1=1867;
- v.datas.an2=1944;
- strcpy(v.datas.luna1,"11");
- strcpy(v.datas.luna2,"03");
- strcpy(v.datas.zi1,"27");
- strcpy(v.datas.zi2,"09");
- }
- else if((strcmp(v.nume,"Stefan Odobleja")==0)||(strcmp(v.nume,"stefan odobleja")==0)){
- strcpy(v.inventii,"inventator al ciberneticii ");
- //strcpy(v.data_nasterii_si_decedarii,"n-13.10.1902 d-4.09.1978");
- v.ani=75;
- v.datas.an1=1902;
- v.datas.an2=1978;
- strcpy(v.datas.luna1,"10");
- strcpy(v.datas.luna2,"09");
- strcpy(v.datas.zi1,"13");
- strcpy(v.datas.zi2,"04");
- }
- else if((strcmp(v.nume,"Nicolae Vasilescu-Karpen")==0)||(strcmp(v.nume,"nicolae vasilescu-karpen")==0)||(strcmp(v.nume,"nicolae vasilescu karpen")==0)){
- strcpy(v.inventii,"inventator al pilelor karpen ");
- //strcpy(v.data_nasterii_si_decedarii,"n-10.12.1870 d-02.03.1964");
- v.ani=93;
- v.datas.an1=1870;
- v.datas.an2=1964;
- strcpy(v.datas.luna1,"12");
- strcpy(v.datas.luna2,"03");
- strcpy(v.datas.zi1,"10");
- strcpy(v.datas.zi2,"02");
- }
- else if((strcmp(v.nume,"Teodor Dragu")==0)||(strcmp(v.nume,"teodor dragu")==0)){
- //strcpy(v.data_nasterii_si_decedarii,"n-1848 d-1925 ");
- strcpy(v.inventii,"ingineriei mecanice in romania");
- v.ani=77;
- v.datas.an1=1848;
- v.datas.an2=1925;
- strcpy(v.datas.luna1,"00");
- strcpy(v.datas.luna2,"00");
- strcpy(v.datas.zi1,"00");
- strcpy(v.datas.zi2,"00");
- }else{
- cout<<"fiindca nu ai introdus un inginer din lista predefinita te rog citeste: "<<endl;
- cout<<"DATELE NASTERII/DECESULUI: ";
- cout<<"Anul Nasterii: ";cin>>v.datas.an1;cin.get();
- cout<<"Luna Nasterii: ";cin.get(v.datas.luna1,sizeof(v.datas.luna1));cin.get();
- cout<<"Ziua Nasterii: ";cin.get(v.datas.zi1,sizeof(v.datas.zi1));cin.get();
- cout<<"Anul Decesului: ";cin>>v.datas.an2;cin.get();
- cout<<"Luna Decesului: ";cin.get(v.datas.luna2,sizeof(v.datas.luna2));cin.get();
- cout<<"Ziua Decesului: ";cin.get(v.datas.zi2,sizeof(v.datas.zi2));cin.get();
- cout<<"Numele inventiei Inginerului : ";cin.get(v.inventii,sizeof(v.inventii));cin.get();
- cout<<"Varsta Inginerului: ";cin>>v.ani;cin.get();cout<<endl;
- }
- nod* p;
- if((prim==ultim)&&(prim==0)){
- prim=ultim=new nod;
- prim->data=v;
- prim->next=0;
- }
- else {
- p=new nod;
- p->data=v;
- ultim->next=p;
- ultim=p;
- ultim->next=0;
- ok=1;
- }
- }
- void afisare(nod *&prim){
- nod* p;
- int i=1;
- p=prim;
- cout<<" "<<left<<setw(20)<<"Numele Inginerului"<<' '<<left<<setw(30)<<" Nasterea Decesul"<<left<<setw(10)<<"Varsta"<<left<<setw(10)<<"Inventii"<<endl<<endl;
- while(p){
- cout<<i<<"."<<' ';
- cout<<fixed;
- cout<<left<<" "<<setw(20)<<p->data.nume<<right<<setw(2)<<showpoint<<setprecision(3)<<p->data.datas.zi1<<"."<<p->data.datas.luna1<<"."<<p->data.datas.an1<<" "<<p->data.datas.zi2<<"."<<p->data.datas.luna2<<"."<<p->data.datas.an2<<" "<<left<<setw(8)<<showpoint<<setprecision(3)<<p->data.ani<<left<<setw(30)<<p->data.inventii<<endl;
- p=p->next;
- i++;
- }
- }
- void sterginginer(char a[]){
- nod* p,*q;
- p=prim;
- q=prim->next;
- while(q){
- if(strcmp(q->data.nume,a)==0){
- p->next=q->next;
- delete(q);
- q=p->next;
- }
- else{
- q=q->next;
- p=p->next;
- }
- }
- ultim=q;
- if(strcmp(prim->data.nume,a)==0){
- q=prim;
- prim=prim->next;
- delete(q);
- }
- }
- void stergani(int b){
- nod* p,*q;
- p=prim;
- q=prim->next;
- while(q){
- if(q->data.ani==b){
- p->next=q->next;
- delete(q);
- q=p->next;
- }
- else{
- q=q->next;
- p=p->next;
- }
- }
- ultim=q;
- if(prim->data.ani==b){
- q=prim;
- prim=prim->next;
- delete(q);
- }
- }
- int caut(nod* &prim){
- int ok1=0;
- nod* c=prim;
- while(c){
- ok1++;
- c=c->next;
- }
- return ok1;
- }
- void meniustergere(){
- int x,op, nr_nume_1, nr_nume_2, nr_an_1, nr_an_2;
- char a[100];
- int b;
- do{
- cout<<"Alege optiunea:"<<endl<<endl;
- cout<<"1. Stergere inginerului cu numele:"<<endl;
- cout<<"2. Stergere inginerului dupa varsta: "<<endl;
- cout<<"3. Afisare"<<endl;
- cout<<"4. Iesire"<<endl;
- cout<<endl<<"Alege optiunea:";
- cin>>op;
- cin.get();
- switch(op){
- case 1:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- cout<<"Numele inginerului : ";
- cin.get(a,100);
- cin.get();
- nr_nume_1=caut(prim);
- sterginginer(a);
- nr_nume_2=caut(prim);
- if(nr_nume_1>nr_nume_2){
- cout<<"STERGEREA S-A EFECTUAT";
- }else
- cout<<"NU EXISTA ACEL ELEMENT IN LISTA ";
- }
- getch();
- system("cls");
- break;
- case 2:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- cout<<"Varsta: ";
- cin>>b;
- cin.get();
- nr_an_1=caut(prim);
- stergani(b);
- nr_an_2=caut(prim);
- if(nr_an_1>nr_an_2){
- cout<<"STERGEREA S-A EFECTUAT";
- }else{
- cout<<"NU EXISTA ACEL ELEMENT IN LISTA ";
- }}
- getch();
- system("cls");
- break;
- case 3:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- afisare(prim);
- }
- getch();
- system("cls");
- break;
- case 4:return;
- }
- }while(op!=5);
- }
- void sortcnume(){
- ingineri x;
- int k;
- nod *p;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(strcmp(p->data.nume,p->next->data.nume)==1){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortdnume(){
- ingineri x;
- int k;
- nod *p;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(strcmp(p->data.nume,p->next->data.nume)==-1){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortcinventii(){
- ingineri x;
- int k;
- nod *p;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(strcmp(p->data.inventii,p->next->data.inventii)==1){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortdinventii(){
- ingineri x;
- int k;
- nod *p;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(strcmp(p->data.inventii,p->next->data.inventii)==-1){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortcani(){
- nod *p;
- int k;
- ingineri x;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(p->data.ani>p->next->data.ani){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortdani(){
- nod *p;
- int k;
- ingineri x;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(p->data.ani<p->next->data.ani){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortcannastere(){
- nod *p;
- int k;
- ingineri x;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(p->data.datas.an1>p->next->data.datas.an1){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortdannastere(){
- nod *p;
- int k;
- ingineri x;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(p->data.datas.an1<p->next->data.datas.an1){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortcandeces(){
- nod *p;
- int k;
- ingineri x;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(p->data.datas.an2>p->next->data.datas.an2){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void sortdandeces(){
- nod *p;
- int k;
- ingineri x;
- do{
- p=prim;
- k=0;
- while(p->next){
- if(p->data.datas.an2<p->next->data.datas.an2){
- x=p->data;
- p->data=p->next->data;
- p->next->data=x;
- k=1;
- }
- p=p->next;}
- }
- while(k);
- }
- void meniusortare(){
- int k;
- do{
- cout<<"Alege sortarea:"<<endl<<endl;
- cout<<"1. Sortare crescatoare ani"<<endl;
- cout<<"2. Sortare descrescatoare ani"<<endl;
- cout<<"3. Sortare alfabetica nume inginer"<<endl;
- cout<<"4. Sortare invers alfabetica nume inginer"<<endl;
- cout<<"5. Sortare alfabetica inventii"<<endl;
- cout<<"6. Sortare invers alfabetica inventii"<<endl;
- cout<<"7. Sortare crescatoare dupa anul nasterii"<<endl;
- cout<<"8. Sortare descrescatoare dupa anul nasterii"<<endl;
- cout<<"9. Sortare crescatoare dupa anul nasterii"<<endl;
- cout<<"10. Sortare descrescatoare dupa anul nasterii"<<endl;
- cout<<"11. Afisare"<<endl;
- cout<<"12. Iesire"<<endl;
- cout<<endl<<"Alege optiunea:";
- cin>>k;
- switch(k){
- case 1:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortcani();
- cout<<"SORTAREA S-A EFECTUAT";
- }
- getch();
- system("cls");
- break;
- case 2:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortdani();
- cout<<"SORTAREA S-A EFECTUAT";
- }
- getch();
- system("cls");
- break;
- case 3:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortcnume();
- cout<<"SORTAREA S-A EFECTUAT";}
- getch();
- system("cls");
- break;
- case 4:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortdnume();
- cout<<"SORTAREA S-A EFECTUAT";}
- getch();
- system("cls");
- break;
- case 5:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortcinventii();
- cout<<"SORTAREA S-A EFECTUAT";}
- getch();
- system("cls");
- break;
- case 6:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortdinventii();
- cout<<"SORTAREA S-A EFECTUAT";}
- getch();
- system("cls");
- break;
- case 7:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortcannastere();
- cout<<"SORTAREA S-A EFECTUAT";}
- getch();
- system("cls");
- break;
- case 8:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortdannastere();
- cout<<"SORTAREA S-A EFECTUAT";}
- getch();
- system("cls");
- break;
- case 9:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortcandeces();
- cout<<"SORTAREA S-A EFECTUAT";}
- getch();
- system("cls");
- break;
- case 10:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){
- sortdandeces();
- cout<<"SORTAREA S-A EFECTUAT";}
- getch();
- system("cls");
- break;
- case 11:system("cls");
- if(ok==0){
- cout<<"Nu exista nici un element in lista";
- }else if(ok!=0){ afisare(prim);}
- getch();
- system("cls"); break;
- case 12:return;
- }
- }while(k!=12);
- }
- void max(nod *prim){
- nod *p;
- double max=-1;
- p=prim;
- while(p){
- if(p->data.ani>max)max=p->data.ani;
- p=p->next;
- }
- cout<<" "<<left<<setw(20)<<"Numele Inginerului"<<" "<<left<<setw(20)<<"Varsta"<<left<<setw(30)<<"Inventii"<<endl<<endl;
- p=prim;
- while(p){
- int i;
- i=1;
- cout<<fixed;
- if(p->data.ani==max)cout<<i<<"."<<left<<" "<<setw(20)<<p->data.nume<<right<<setw(10)<<showpoint<<setprecision(3)<<p->data.ani<<" "<<left<<setw(30)<<p->data.inventii<<endl;
- p=p->next;
- i++;
- }
- }
- void min(nod *prim){
- nod *p;
- double min=9000000;
- p=prim;
- while(p){
- if(p->data.ani<min)min=p->data.ani;
- p=p->next;
- }
- cout<<" "<<left<<setw(20)<<"Numele Inginerului"<<" "<<left<<setw(20)<<"Varsta"<<left<<setw(30)<<"Inventii"<<endl<<endl;
- p=prim;
- while(p){
- int i;
- i=1;
- cout<<fixed;
- if(p->data.ani==min) cout<<i<<"."<<left<<" "<<setw(20)<<p->data.nume<<right<<setw(10)<<showpoint<<setprecision(3)<<p->data.ani<<" "<<left<<setw(30)<<p->data.inventii<<endl;
- p=p->next;
- i++;
- }
- }
- int main(){
- prim=ultim=pprim=0;
- int op;
- do{
- cout<<" 1.Creare/Adaugare"<<endl;
- cout<<" 2.Afisare lista ingineri"<<endl;
- cout<<" 3.Minim"<<endl;
- cout<<" 4.Maxim"<<endl;
- cout<<" 5.Meniu stergere"<<endl;
- cout<<" 6.Meniu sortare"<<endl;
- cout<<" 7.Iesire"<<endl;
- cout<<endl<<endl<<"Optiunea:";
- cin>>op;
- cin.get();
- switch(op){
- case 1: system("cls");
- adauga(prim,ultim);
- //adaugSentinel(prim);
- Counter++;
- system("cls");
- break;
- case 2: system("cls");
- afisare(prim);
- getch();
- system("cls");
- break;
- case 3: system("cls");
- min(prim);
- getch();
- system("cls");
- break;
- case 4: system("cls");
- max(prim);
- getch();
- system("cls");
- break;
- case 5: system("cls");
- if(Counter==0){
- cout<<"MENIUL DE SORTARE NU ESTE ACCESIBIL DEOARECE LISTA NU ARE NICI UN ELEMENT";
- }else
- meniustergere();
- getch();
- system("cls");
- break;
- case 6: system("cls");
- if(Counter==1||Counter==0){
- cout<<"MENIUL DE SORTARE NU ESTE ACCESIBIL DEOARECE LISTA ARE UN SINGUR ELEMENT SAU NICI UN ELEMENT";
- }else
- meniusortare();
- getch();
- system("cls");
- break;
- case 7: return 0;
- default:system("cls"); cout<<"OPTIUNE INCORECTA!!"<<endl<<endl;getch();system("cls");break;
- }
- }while (op!=7);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement