Advertisement
Dani_info

tema 19.09.2018

Sep 18th, 2018
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.65 KB | None | 0 0
  1.     #include <iostream>
  2.     #include <math.h>
  3.  
  4.     using namespace std;
  5.  
  6.     int nrCifre(int);
  7.     int eliminareCifraMijloc_Impare(int);
  8.     int eliminareCifreMijloc_Pare(int);
  9.     int putere (int, int);
  10.  
  11.     int main()
  12.     {
  13.         int pb;
  14.         cout << "Introdu nr probl"<<endl; cin>>pb;
  15.         switch(pb){
  16.             case 1:{
  17.                 /*Se citeste un numar natural, n. Sa se calculeze cifra sa de control, definite conform   algoritmului sugerat de exemplul de mai jos.
  18.                 Ex: daca n=997788, se calculeaza suma cifrelor, s=48; deoarece aceasta nu e o cifra, se calculeaza suma cifrelor acesteia,
  19.                 sā€™=12; deoarece nici aceasta nu este o cifra, se calculeaza suma noii sume sā€™ā€™=3; de data aceasta s-a obtinut o cifra; aceasta este cifra de control a numarului dat */
  20.                 int n; cout<<"n="; cin>>n;
  21.                 int s=0, s_nou;
  22.                 for (int i=n; i; i/=10)
  23.                     s+=i%10;
  24.                 while (s>9){
  25.                     int s_nou = 0;
  26.                     for (int i=s; i; i/=10)
  27.                         s_nou+=i%10;
  28.                     s=s_nou;
  29.                 }
  30.  
  31.                 cout<<"Cifra de control este "<<s;
  32.                 break;
  33.             }
  34.             case 2:{
  35.                 /* Se citeste un numar natural nenul, n. Daca numarul de cifre ale lui n este impar, sa se genereze si sa se afiseze numarul obtinut prin eliminarea cifrei
  36.                 sale din mijloc; daca numarul de cifre ale lui n este par, sa se genereze si sa se afiseze numarul obtinut prin eliminarea celor doua cifre aflate la mijloc.
  37.                 Ex: daca n=32456, se va afisa numarul 3256; daca n=3472, se va afisa numarul 32. */
  38.                 int n; cout<<"n="; cin>>n;
  39.                 if (nrCifre(n)%2) cout<<eliminareCifraMijloc_Impare(n);
  40.                 else cout<<eliminareCifreMijloc_Pare(n);
  41.                 break;
  42.             }
  43.             case 3:{
  44.                 /* Se citeste un numar natural, n. Sa se genereze si sa se afiseze numarul obtinut prin dublarea tuturor cifrelor sale impare.
  45.                 Ex: daca n=234355, se va afisa numarul 2334335555 */
  46.                 int n; cout<<"n="; cin>>n;
  47.                 int n_nou=0;
  48.                 while (n){
  49.                     n_nou=n_nou*10+n%10;
  50.                     if ((n%10)%2)
  51.                          n_nou=n_nou*10+n%10;
  52.                     n/=10;
  53.                 }
  54.                 int inv=0;
  55.                 while (n_nou){
  56.                     inv=inv*10+n_nou%10;
  57.                     n_nou/=10;
  58.                 }
  59.                 cout<<"Nr format este "<<inv<<endl;
  60.             }
  61.  
  62.         }
  63.         return 0;
  64.     }
  65.  
  66.         int nrCifre (int n){
  67.             int k=0;
  68.             while (n){
  69.                 n/=10;
  70.                 k++;
  71.             }
  72.             return k;
  73.         }
  74.  
  75.  
  76.         int putere(int x, int y)
  77.         {
  78.             int v = 1;
  79.             for(int i = 1; i<=y; i++)
  80.                 v*=x;
  81.             return v;
  82.         }
  83.  
  84.         int eliminareCifraMijloc_Impare(int n){
  85.              int primeleCifre=n/(putere(10, (nrCifre(n)/2 + 1)));
  86.              int k= (putere(10,(nrCifre(n)/2)));
  87.              int ultimeleCifre=n%k;
  88.              int nrNou=primeleCifre*putere(10, (nrCifre(ultimeleCifre)))+ultimeleCifre;
  89.              return nrNou;
  90.         }
  91.  
  92.         int eliminareCifreMijloc_Pare (int n){
  93.             int primeleCifre=n/(putere(10, ((nrCifre(n)-2)/2 +2)));
  94.             int k= putere(10, ((nrCifre(n)-2)/2));
  95.             int ultimeleCifre=n%k;
  96.             int nrNou=primeleCifre*putere(10, (nrCifre(ultimeleCifre)))+ultimeleCifre;
  97.             return nrNou;
  98.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement