Advertisement
Dani_info

Tema 04.12.2018

Dec 3rd, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. //sub III
  7.  
  8. int Cif (int, int);
  9. bool IsPrime(int);
  10. int f(int);
  11. int sub (int);
  12. void sub(int, int, int[], int[]);
  13. void sub (int, int);
  14. void sub (int, int&, int&);
  15. int sum (int);
  16.  
  17. int cif[10];
  18.  
  19. int main()
  20. {
  21.     int pb;
  22.     cout<<"introdu numarul problemei:"<<endl; cin>>pb;
  23.     switch (pb){
  24.         case 1:{//3/4 - subpunct a
  25.                 int n, cifra;
  26.                 cout<<"n="; cin>>n;
  27.                 cout<<"cifra:"; cin>>cifra;
  28.                 cout<<"Cifra "<<cifra<<" apare de "<<Cif(n, cifra)<<" ori in numarul "<<n<<endl;
  29.                 break;
  30.             }
  31.             case 2:{//3/4 - subpunct b
  32.                 int n;
  33.                 cout<<"n="; cin>>n;
  34.                 int ok=1;
  35.                 for (int i=n; i; i/=10){
  36.                     cif[i%10]=Cif(n, i%10);
  37.                     if (cif[i%10]%2)
  38.                         ok=0;
  39.                 }
  40.                 int nr=0;
  41.                 if (!ok)
  42.                         cout<<"0"<<endl;
  43.                 for (int i=9; i>=0; i--){
  44.                     if(cif[i]){
  45.                         int nr_aparitii=cif[i];
  46.                         while (nr_aparitii>1){
  47.                             nr=nr*10+i;
  48.                             nr_aparitii/=2;
  49.                         }
  50.                     }
  51.                 }
  52.                 for (int i=0; i<=10; i++){
  53.                     if(cif[i]){
  54.                         int nr_aparitii=cif[i];
  55.                         while (nr_aparitii>1){
  56.                             nr=nr*10+i;
  57.                             nr_aparitii/=2;
  58.                         }
  59.                     }
  60.                 }
  61.                 cout<<nr<<endl;
  62.                 break;
  63.             }
  64.             case 3:{//5/4
  65.                 int n; cout<<"n="; cin>>n;
  66.                 cout<<"Cel mai  mic divizor prim este: "<<f(n)<<endl;
  67.                 int nr;
  68.                 cout<<"Cate nr se citesc??"; cin>>nr;
  69.                 int v[nr];
  70.                 cout<<"Scrie nr:"<<endl;
  71.                 int x, ind=0;
  72.                 for (int i=0; i<nr; i++){
  73.                     cin>>x;
  74.                     if(f(x)==x)
  75.                         v[ind++]=x;
  76.                 }
  77.  
  78.                 sort(v, v+ind);
  79.                 cout<<"Elementele sunt:"<<endl;
  80.                 for (int i=0; i<ind; i++)
  81.                     cout<<v[i]<<" ";
  82.                 break;
  83.             }
  84.  
  85.             case 4:{//7/4
  86.                 int n;
  87.                 cout<<"n="; cin>>n;
  88.                 cout<<"Val apropiata este "<<sub (n)<<endl;
  89.                 int s;
  90.                 cout<<"s="; cin>>s;
  91.                 while (s){
  92.                     cout<<sub(s)<<" ";
  93.                     s-=sub(s);
  94.                 }
  95.                 break;
  96.             }
  97.  
  98.             case 5:{//8/4
  99.                 int n; cout<<"n="; cin>>n;
  100.                 int m; cout<<"m="; cin>>m;
  101.                 int a[n], b[m];
  102.                 cout<<"Introdu elementele primului vector:"<<endl;
  103.                 for (int i=0; i<n; i++) cin>>a[i];
  104.                  cout<<"Introdu elementele celui de-al doilea vector:"<<endl;
  105.                 for (int i=0; i<m; i++) cin>>b[i];
  106.                 sub (n, m, a, b);
  107.                 break;
  108.             }
  109.  
  110.             case 6:{//9/3
  111.                 int n, k;
  112.                 cout<<"n="; cin>>n;
  113.                 cout<<"k="; cin>>k;
  114.                 sub(n, k);
  115.                 break;
  116.             }
  117.  
  118.             case 7:{//10/3
  119.                 int n, a, b;
  120.                 cout<<"n="; cin>>n;
  121.                 sub(n,a,b);
  122.                 cout<<"a="<<a<<endl;
  123.                 cout<<"b="<<b<<endl;
  124.                 break;
  125.             }
  126.  
  127.             case 8:{//11/4
  128.                 int n;
  129.                 cout<<"n="; cin>>n;
  130.                 cout<<"Suma divizorilor lui "<<n<<" este "<<sum(n)<<endl;
  131.                 int nr;
  132.                 cout<<"Cate nr se citesc??"; cin>>nr;
  133.                 int x, cnt=0;
  134.                 cout<<"Introdu nr:"<<endl;
  135.                 for (int i=0; i<nr; i++){
  136.                     cin>>x;
  137.                     if (sum(x)==1+x)
  138.                         cnt++;
  139.                 }
  140.                 cout<<"In sir exista "<<cnt<<" nr prime"<<endl;
  141.                 break;
  142.             }
  143.  
  144.     }
  145.     return 0;
  146. }
  147.  
  148.  
  149.     int Cif (int a, int b){
  150.         int cnt=0;
  151.         while (a){
  152.             if (a%10==b)
  153.                 cnt++;
  154.             a/=10;
  155.         }
  156.         return cnt;
  157.     }
  158.  
  159.     int f (int a){
  160.         if (a==1) return -1;
  161.         else{
  162.             for (int i=2; i<=a; i++){
  163.                 if (a%i==0 && IsPrime(i))
  164.                     return i;
  165.             }
  166.         }
  167.     }
  168.  
  169.     bool IsPrime (int n){
  170.         if (n==1) return false;
  171.         if (n==2) return true;
  172.         if (n==3) return true;
  173.         else{
  174.             for (int i=2; i<=sqrt(n); i++)
  175.                 if (n%i==0)
  176.                 return false;
  177.         }
  178.         return true;
  179.     }
  180.  
  181.     int sub (int n){
  182.         int val_min=10000, val;
  183.         int v[100];
  184.         int ind=0;
  185.         for (int i=0; i<=5; i++){
  186.             v[ind++]=i;
  187.             if (abs(n-v[i])<val_min){
  188.                 val_min=abs(n-v[i]);
  189.                 val=v[i];
  190.             }
  191.         }
  192.         for (int i=6; i<100; i++){
  193.             v[i]=2*v[i-1];
  194.              if (abs(n-v[i])<val_min){
  195.                 val_min=abs(n-v[i]);
  196.                 val=v[i];
  197.             }
  198.         }
  199.         return val;
  200.     }
  201.  
  202.     void sub (int n, int m, int a[], int b[]){
  203.         //a - pare
  204.         //b - impare
  205.         int c[m+n], ind=0;
  206.         int i=0, j=0;
  207.         while (i<n && j<m){
  208.             if (a[i]<b[j]){
  209.                 c[ind++]=a[i++];
  210.             }
  211.             else
  212.                 c[ind++]=b[j++];
  213.         }
  214.  
  215.         //completare vector
  216.         for (int d=i; d<n; d++)
  217.             c[ind++]=a[d];
  218.         for (int k=j; k<m; k++)
  219.             c[ind++]=b[k];
  220.         cout<<"Vectorul format este:"<<endl;
  221.         cout<<c[0]<<" ";
  222.         for (int i=1; i<m+n; i++){
  223.             if (c[i]%2 != c[i-1]%2)
  224.                 cout<<c[i]<<" ";
  225.         }
  226.  
  227.     }
  228.  
  229.  
  230.     void sub (int n, int k){
  231.         int v[n], ind=0;
  232.         for (int i=1; i<1000; i++){
  233.             if (i%k==0)
  234.                 v[ind++]=i;
  235.             if (ind==n)
  236.                 break;
  237.         }
  238.         sort(v, v+ind, greater<int>());
  239.         cout<<"Sirul format este:"<<endl;
  240.         for (int i=0; i<ind; i++)
  241.             cout<<v[i]<<" ";
  242.     }
  243.  
  244.     void sub (int n, int& a, int& b){
  245.         int nr=0;
  246.         for (int i=n-1; i && nr<2; i--){
  247.             if (IsPrime(i) && nr == 1){
  248.                 b=i;
  249.                 nr++;
  250.             }
  251.             if (IsPrime(i) && nr == 0){
  252.                 a=i;
  253.                 nr++;
  254.             }
  255.         }
  256.     }
  257.  
  258.     int sum (int n){
  259.         int s=0;
  260.         for (int i=1; i<=n/2; i++)
  261.             if(n%i==0){
  262.                 s+=i;
  263.             }
  264.         return s+n;
  265.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement