Advertisement
Gireada

PA Sem 3 ALL

Mar 13th, 2017
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3.  
  4. using namespace std;
  5.  
  6. struct lista
  7. {
  8.     int info;
  9.     lista *urm;
  10. };
  11.  
  12. lista *p, *prim, *ultim;
  13. int n, inf;
  14.  
  15. int reluare();
  16.  
  17. void creare_infata(lista *&prim, lista *&ultim)
  18. {
  19.     cout<<"Introdu numarul de elemente: ";cin>>n;
  20.     cout<<"\nIntrodu informatia: ";cin>>inf;
  21.    
  22.     prim = new lista;
  23.     prim -> info = inf;
  24.     prim -> urm = NULL;
  25.     ultim=prim;
  26.    
  27.     for(int i = 2; i <= n; i++)
  28.     {
  29.         cout<<"\nIntrodu informatia: ";cin>>inf;
  30.         p = new lista;
  31.         p -> info = inf;
  32.         p -> urm = prim;
  33.         prim = p;
  34.     }
  35. }
  36.  
  37. void creare_spate(lista *&prim, lista *&ultim)
  38. {
  39.     cout<<"\nIntrodu numarul de elemente: ";cin>>n;
  40.     cout<<"\nIntrodu informatia: ";cin>>inf;
  41.    
  42.     prim = new lista;
  43.     prim -> info = inf;
  44.     prim -> urm = NULL;
  45.     ultim = prim;
  46.    
  47.     for(int i = 2; i <=n; i++)
  48.     {
  49.         cout<<"\nIntrodu informatia: ";cin>>inf;
  50.         p = new lista;
  51.         p -> info = inf;
  52.         p -> urm = NULL;
  53.         ultim -> urm = p;
  54.         ultim = p;
  55.     }
  56. }
  57.  
  58. void creare_fibonacci(lista *&prim, lista *&ultim, int numar_elem_fibonacci)
  59. {
  60.     prim = new lista;
  61.     prim -> info = 1;
  62.     prim -> urm = NULL;
  63.     p = new lista;
  64.     p -> info = 1;
  65.     p -> urm = NULL;
  66.     prim -> urm = p;
  67.     ultim = p;
  68.    
  69.     int i = 2, j = 1, k = 1, e = 2;
  70.     while( e < numar_elem_fibonacci)
  71.     {
  72.         i = j + k;
  73.         p = new lista;
  74.         p -> info = i;
  75.         p -> urm = NULL;
  76.         ultim -> urm = p;
  77.         ultim = p;
  78.         j = k; k = i;  
  79.         e++;
  80.     }  
  81. }
  82.  
  83. void afisare(lista *prim)
  84. {
  85.     p = prim;
  86.     while(p != NULL)
  87.     {
  88.         cout<<" "<<p->info;
  89.         p = p -> urm;
  90.    
  91.     }
  92. }
  93.  
  94. int suma(lista *prim)
  95. {
  96.     int suma = 0;
  97.     p = prim;
  98.     while(p != NULL)
  99.     {
  100.         suma += p ->info;
  101.         p = p -> urm;
  102.     }
  103.     return suma;
  104. }
  105.  
  106. int maxim(lista *prim)
  107. {
  108.     p = prim;
  109.     int maxim2 = p -> info;
  110.     while(p != NULL)
  111.     {
  112.         if(p -> info > maxim2)
  113.             maxim2 = p -> info;
  114.         p = p -> urm;  
  115.     }
  116.     return maxim2;
  117. }
  118.  
  119.  
  120. int verific_prim(int nr)
  121. {
  122.     int flag = 1;
  123.     for(int i = 2; i <= n/2; i++)
  124.     {
  125.         if(nr%i == 0)
  126.             flag = 0;  
  127.     }
  128.     return flag;
  129. }
  130.  
  131. int prim2(lista *prim)
  132. {
  133.     p = prim;
  134.     int contor = 0;
  135.     while(p != NULL)
  136.     {
  137.         if(verific_prim(p -> info) == 1)
  138.             contor++;
  139.         p = p -> urm;  
  140.     }
  141.     return contor;
  142. }
  143.  
  144. void primul()
  145. {
  146.     cout<<"\nAi ales primult program adica: Suma si Maximul unei liste.";
  147.     creare_infata(prim, ultim);
  148.     afisare(prim);
  149.     cout<<endl<<maxim(prim);
  150.     cout<<endl<<suma(prim);
  151.     reluare();
  152. }
  153.  
  154. void aldoilea()
  155. {
  156.     cout<<"\nAi ales al doilea program adica: Numere prime intr-o lista.";
  157.     creare_spate(prim, ultim);
  158.     afisare(prim);
  159.     cout<<endl<<prim2(prim);
  160.     reluare();
  161. }
  162.  
  163. void altreilea()
  164. {
  165.     cout<<"\nAi ales al doilea program adica: Sirul lui Fibonacci pentru un nr de elem.";
  166.     int nr_el;
  167.     cout<<"Introdu nr de elem : ";cin>>nr_el;
  168.     creare_fibonacci(prim, ultim, nr_el);
  169.     afisare(prim);
  170.     reluare();
  171. }
  172.  
  173. void menu()
  174. {
  175.     int opt;
  176.     cout<<"1. Suma si Maximul unei liste\n2. Numere prime intr-o lista\n3. Sirul lui Fibonacci pentru un nr de elem."<<endl;
  177.     cin>>opt;
  178.     cout<<endl;
  179.     switch(opt)
  180.     {
  181.         case 1: primul();
  182.         case 2: aldoilea();
  183.         case 3: altreilea();
  184.         default:
  185.         {
  186.             cout<<"Ai ales un program gresit. Incearca una din optiunea de mai sus"<<endl;
  187.             menu();
  188.         }
  189.     }
  190. }
  191.  
  192. int reluare()
  193. {
  194.     char rel[2];
  195.     cout<<"\nVrei sa reiei programul?(Da sau Nu): ";cin>>rel;
  196.     if(rel[0] = 'D')
  197.         menu();
  198.     else
  199.         return 0;  
  200. }
  201.  
  202. int main()
  203. {
  204.     menu();
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement