Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct nod
- {
- int info;
- nod *next;
- };
- nod *p,*u,*x,*z;
- int n,m;
- //Creaza lista sau adauga elemente listei
- void mk_ad()
- {
- nod *c;
- if(!p)
- {
- p=new nod;
- cout<<"valorea primului nod:";
- cin>>p->info;
- u=p;
- }
- else
- {
- c=new nod;
- cout<<"informatie utila:";
- cin>>c->info;
- u->next=c;
- u=c;
- }
- u->next=0;
- }
- //Afisarea listei
- void prt_l()
- {
- nod *c;
- c=p;
- while(c)
- {
- cout<<c->info<<" ";
- c=c->next;
- }
- cout<<endl;
- }
- //Verifica daca este prim
- int prim(nod *a)
- {
- int i=2;
- while(i<=a->info/2)
- {
- if(a->info%i==0)
- return 0;
- i=i+1;
- }
- return 1;
- }
- //Nr. de elemente prime
- int l_nrp(nod *q)
- {
- if(q)
- {
- if(prim(q)==1)
- return 1+l_nrp(q->next);
- else
- return l_nrp(q->next);
- }
- return 0;
- }
- //Suma elementelor listei
- int l_sum(nod *q)
- {
- if(q)
- {
- return q->info+l_sum(q->next);
- }
- return 0;
- }
- //Produsul elementelor listei
- int l_prod(nod *q)
- {
- if(q)
- {
- return q->info*l_prod(q->next);
- }
- return 1;
- }
- //Verifica daca lista este ordonata
- int ord()
- {
- nod *c,*d;
- c=p;
- d=c->next;
- while(d)
- {
- if((c->info)>(d->info))
- return 0;
- c=c->next;
- d=d->next;
- }
- return 1;
- }
- //Elementul maxim al listei
- int l_max()
- {
- int max; nod *c;
- c=p;
- max=c->info;
- c=c->next;
- while(c)
- {
- if(c->info>max)
- max=c->info;
- c=c->next;
- }
- return max;
- }
- //Creaza o noua lista sau adauga elemente listei
- void sec_mkad()
- {
- nod *c;
- if(!x)
- {
- x=new nod;
- cout<<"valorea primului nod:";
- cin>>x->info;
- z=x;
- }
- else
- {
- c=new nod;
- cout<<"informatie utila:";
- cin>>c->info;
- z->next=c;
- z=c;
- }
- z->next=0;
- }
- //Suma cifrelor unui numar
- int c_sum(int a)
- {
- if(a>0)
- return a%10+c_sum(a/10);
- return 0;
- }
- //Dublarea cifrelor cu suma numerelor < 10
- void dli()
- {
- nod *c,*r,*aux;
- c=p;
- while(c)
- {
- aux=c->next;
- if(c_sum(c->info)<10)
- {
- r=new nod;
- r->info=c->info;
- r->next=c->next;
- c->next=r;
- }
- c=aux;
- }
- }
- int main()
- {
- int i;
- nod *q;
- //a. Creaza lista, adauga elemente + afisare
- cout<<"n="; cin>>n;
- for(i=1;i<=n;i++)
- {
- mk_ad();
- }
- cout<<endl; prt_l();
- //b. Adauga 2 elemente + afisare
- for(i=1;i<=2;i++)
- {
- mk_ad();
- }
- cout<<endl; prt_l();
- //c. Adauga m elemente + afisare
- cout<<"m="; cin>>m;
- for(i=1;i<=m;i++)
- {
- mk_ad();
- }
- cout<<endl; prt_l();
- //d. Cate de numere prime sunt in lista
- q=p;
- cout<<"Nr. prime: "<<l_nrp(q)<<endl;
- //e. Suma + produsul elementelor listei
- cout<<"Suma: "<<l_sum(q)<<"; Produsul: "<<l_prod(q)<<endl;
- //f. ord?(1/0)
- if(ord()==1)
- cout<<"Lista ordonata"<<endl;
- else
- cout<<"Lista neordonata"<<endl;
- //g. Elementul maxim al listei
- cout<<"Maxim: "<<l_max()<<endl;
- //h. Creaza o noua lista, adauga n elemente + afisare
- cout<<"n=";
- cin>>n;
- for(i=1;i<=n;i++)
- {
- sec_mkad();
- }
- u->next=x;
- u=z;
- cout<<endl;
- prt_l();
- //i. Dubleaza cif cu s_cif<10
- dli();
- cout<<endl;
- prt_l();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement