Advertisement
icatalin

tema info 20.05

May 20th, 2015
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <fstream>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. ifstream f("date.in");
  9.  
  10. struct nod
  11. {
  12.     int info;
  13.     nod *urm;
  14. };
  15.  
  16. nod *prim;
  17.  
  18.  
  19. void creare()
  20. {
  21.    nod *p,*nou;
  22.    int x;
  23.    while (f>>x)
  24.    if (prim==NULL)
  25.    {
  26.        prim=new nod;
  27.        prim->info=x;
  28.        p=prim;
  29.    }
  30.    else
  31.    {
  32.        nou=new nod;
  33.        nou->info=x;
  34.        p->urm=nou;
  35.        p=nou;
  36.    }
  37.    p->urm=NULL;
  38. }
  39.  
  40. void afisare(nod *p)
  41. {
  42.     nod *q=p;
  43.     while (q)
  44.     {
  45.         cout<<q->info<<" ";
  46.         q=q->urm;
  47.     }
  48. }
  49.  
  50. void afisare_pare(nod *p)
  51. {
  52.     nod *q=p;
  53.     while (q)
  54.     {
  55.         if (q->info%2==0)
  56.         cout<<q->info<<" ";
  57.         q=q->urm;
  58.     }
  59. }
  60.  
  61. int nr_prim(int x)
  62. {
  63.   int i,ok=0;
  64.   if (x==0 || x==1)
  65.         return 0; // nu e prim
  66.   for (i=2;i<=sqrt(x);i++)
  67.     if (x%i==0)
  68.     ok=1;
  69.  
  70.   if (ok==1)
  71.     return 0;// nu e prim
  72.   return 1;// e prim
  73. }
  74.  
  75. void inserare_prim(nod *prim)
  76. {
  77.     nod *p=prim,*nou;
  78.     int x=2020;
  79.     while (nr_prim(p->info)==0)
  80.         p=p->urm;
  81.  
  82.     nou=new nod;
  83.     nou->info=x;
  84.     nou->urm=p->urm;
  85.     p->urm=nou;
  86.  
  87. }
  88.  
  89. void stergere_primul_par()
  90. {
  91.     nod *p=prim,*q,*r;
  92.      if (p->info%2==0)
  93.         {
  94.         prim=prim->urm;
  95.         delete p;
  96.         }
  97.         else
  98.         {
  99.             while (p->urm->info%2!=0 && p->urm!=NULL)
  100.                 p=p->urm;
  101.             q=p->urm;
  102.             r=p->urm->urm;
  103.             p->urm=r;
  104.             delete q;
  105.         }
  106. }
  107.  
  108. void stergere_ultimul_par()
  109. {
  110.     nod *p=prim,*q,*r;
  111.     while (p->urm->urm)
  112.     {
  113.         p=p->urm;
  114.     }
  115.    if(p->urm->info%2==0)
  116.    {
  117.        q=p->urm;
  118.        delete q;
  119.        p->urm=NULL;
  120.    }
  121.    else
  122.    {
  123.        // NU STIU
  124.    }
  125. }
  126.  
  127. void inserare_val_cons()
  128. {
  129.     nod *nou,*p=prim;
  130.     while (p->urm)
  131.     {
  132.         if (p->info==p->urm->info)
  133.         {
  134.             nou=new nod;
  135.             nou->info=p->info*2;
  136.             nou->urm=p->urm;
  137.             p->urm=nou;
  138.  
  139.         }
  140.  
  141.             p=p->urm;
  142.     }
  143. }
  144.  
  145. int fv[9];
  146.  
  147. int cifre_distincte(int x)
  148. {
  149.     int i,ok=0;
  150.     while (x)
  151.     {
  152.         fv[x%10]++;
  153.         x=x/10;
  154.     }
  155.  
  156. for (i=0;i<=9;i++)
  157.     if (fv[i]>1)
  158.     ok=1;
  159.  
  160.         if (ok==0)
  161.         return 0;// are doar cifre disticnte
  162. return 1; // nu are doar cifre distincte
  163.  
  164.  
  165. }
  166.  
  167. void stergere_distincte()
  168. {
  169.     nod *p=prim,*q,*r;
  170.  
  171. if (cifre_distincte(p->info)==0)
  172. {
  173.     prim=prim->urm;
  174.     delete p;
  175. }
  176.  
  177. p=prim;
  178.  
  179.     while (p->urm)
  180.     {
  181.         if (cifre_distincte(p->urm->info)==0)
  182.         {
  183.             q=p->urm;
  184.             r=p->urm->urm;
  185.             p->urm=r;
  186.             delete q;
  187.         }
  188.         p=p->urm;
  189.     }
  190.  
  191. }
  192.  
  193. int main()
  194. {
  195. creare();
  196. stergere_distincte();
  197. afisare(prim);
  198.  
  199.  
  200.  
  201.  
  202.     return 0;
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement