Sunteți pe pagina 1din 6

ALGORITMI ELEMENTAR – CIFRELE UNUI NUMAR

1. Cifrele unui numar


#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while(n != 0) // cat timp n este nenul - mai are cifre
{
int uc = n % 10; //determinam ultima cifra a lui n
cout << uc << " "; // prelucram ultima cifra
n /= 10;    //  eliminam ultima cifra (trunchiem numarul)
}
return 0;
}

2.Oglinditul unui numar natural


#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
int ogl= 0;
while(n){
ogl =10*ogl + n%10;
n /= 10;
}
cout << ogl << endl;
return 0;
}

3. Se dă un număr natural. Să se modifice acest număr, micșorând cu o unitate fiecare cifră impară. Dacă
numărul dat este 275 rezultatul va fi 264.
#include <iostream>
int main()
{
int n , R = 0, p = 1;
std :: cin >> n;
while(n)
{
int uc = n % 10;
if(uc % 2 == 0)
R += p * uc;
else
R += p * (uc - 1);
p *= 10;
n /= 10;
}
std :: cout << R << std :: endl;
return 0;
}

4.Dublarea cifrelor pare dintr-un numar


#include <iostream>
using namespace std;
int main()
{
int x,c,n=0,p=1;
cin>>x;
while(x!=0)
{
c=x%10;
n=n+c*p;
p=p*10;
if(c%2==0)
{
n=n+c*p;
p=p*10;
}
x=x/10;
}
cout<<n;
}

5.Eliminarea cifrelor impare


#include <iostream>
using namespace std;
int n,m,p;
int main()
{
cout<<"Introduceti numarul n: ";
cin>>n;
p=1;
while(n>0)
{
if(n%2==0)
{
m=(n%10)*p+m;
p=p*10;
}
n=n/10;
}
if(p==1)
cout<<"Numarul are numai cifre impare";
else
cou<<m;
return 0;
}
6.Cifra minima si maxima
#include<iostream.h>
         void main()
        {int n, c, min=9, max=0;
                    cout<<"n=";
                    cin>>n;      
            if(c<min)
          c=n%10;
          min=c;
            if(c>max)
          n=n/10;
          max=c;
        
            cout<<"max="<<max;endl
            cout<<"min="<<min;
       }

7.Cifra de control

#include<iostream.h>
        void main()
       {int c, s, n, s=0;
               cout<<"n=";
               cin>>n;
         while(n>0)
     { c=n%10;
        n=n/10;
        s=s+c;
     }
         n=s;
            cout<<"c="<<c;endl
            cout<<"n="<<n;
  }

8.Se dă un număr natural n. Să se afișeze numărul format din ultimele k cifre ale lui n.
int i, p = 1;
for (i = 0; i < k; i++)
    p *= 10;
cout << n % p << '\n';

9.Se dă un număr natural n. Să se afișeze numărul format prin eliminarea ultimelor k cifre ale lui n.
int i, p = 1;
for (i = 0; i < k; i++)
    p *= 10;
cout << n / p << '\n';
10. Se dă un număr natural n. Să se afișeze a k-a cifră a sa, considerându-le numerotate de la 1, de la stânga
la dreapta.
int i, p = 1;
for (i = 0; i < m - k; i++)
    p *= 10;
cout << n / p % 10 << '\n';

11. Se dă un număr natural n. Să se determine prima sa cifră (cea mai semnificativă cifră).
while (n > 9)
    n /= 10;
cout << n << '\n';

12. Se dă un număr natural n. Să se determine dacă n este un palindrom. Un număr palindrom este un
număr care citit atât de la dreapta la stânga, cât și de la stânga la dreapta, este același.
int m = 0;
int cpy = n;
 
while (cpy) {
    m = m * 10 + cpy % 10;
    cpy /= 10;
}
 
if (n == m)
    cout << "DA\n";
else
    cout << "NU\n";

13. Se citește un număr natural n cu cel mult 9 cifre. Apoi se introduc de la tastatură două valori c1 și
c2reprezentând două cifre (c2 este totdeauna o cifră nenulă!). Afișați numărul n după înlocuirea tuturor
cifrelor c1 cu cifra c2.

#include <iostream>
using namespace std;
int main()
{
int n,c1,c2,x=0,p=1;
cin>>n>>c1>>c2;
if(n==0 and c1==0)
n=c2;
while(n)
{
if(n%10==c1)
{
x=x+c2*p;
p=p*10;
}
else
{
x=x+(n%10)*p;
p=p*10;
}
n=n/10;
}
n=x;
cout<<n;
return 0;
}
14. Se citește un număr natural n cu cel mult 9 cifre. Afișați cea mai din dreapta cifră parăși cea mai din
stânga cifră impară. Dacă n nu conține cifre pare se va afișa -1. Dacă n nu conține cifre impare se va afișa -2.

#include <iostream>
using namespace std;
int main()
{
int n,cpara,cimpara,npare=0,nimpare=0;
cin>>n;
if(n==0) {npare=1;cpara=0;}
while(n)
{
if(n%2==0 and npare==0)
{
cpara=n%10;
npare++;
}
if(n%2)
{
cimpara=n%10;
nimpare++;
}
n=n/10;
}
if(npare==0)
cout<<-1<<" ";
else
cout<<cpara<<" ";
if(nimpare==0)
cout<<-2<<" ";
else
cout<<cimpara;
return 0;
}

15. Se citește un număr natural n cu cel mult 8 cifre. Afișați numărul după efectuarea următoarelor
schimbări: se inversează prima cifră cu a doua, a treia cu a patra, etc. Dacă numărul dat are un număr impar
de cifre se va afișa mesajul nu se poate efectua.
Exemplu: n=1234 se va transforma în n=2143.

#include <iostream>
using namespace std;
int main()
{
int n,x=0,p=1,nr;
cin>>n;
int cn=n,nrcifre=0;
while(cn)
{
nrcifre++;
cn/=10;
}
if(nrcifre%2!=0)
cout<<"nu se poate efectua";
else
{
while(n>9)
{
nr=n%10*10+n/10%10;
x=x+nr*p;
p=p*100;
n=n/100;
}
cout<<x;
}
return 0;
}

S-ar putea să vă placă și