Sunteți pe pagina 1din 5

Algoritm care prelucreaza cifrele lui x

1. citeste x
2. cat timp(nu am prelucrat toate cifrele lui x) executa
a. extrage din x ultima cifra: uc=x%10
b. prelucreaza uc in functie de cerinta
c. elimina uc din x: x=x/10

3. afisare rezultat
_________________________________________________________
1. Suma cifrelor lui x:
int sumacif(int x)
{ int s=0,uc;
while(x>0)
{ uc=x%10;
s=s+uc;
x=x/10;
}
return s;
}
2. Prima cifra a lui x:
int Prima_Cifra(int x)
{
while(x>9)
x=x/10;
return x;
}
3. Numarul de cifre ale lui x:
int numarcif(int x)
{ int nr=0;
while(x>0)
{ nr++;
x=x/10;
}
return nr;
}
4. Numarul de cifre impare ale lui x
int nr_cif_impar(int x)
{ int nri=0,uc;
while(x>0)
{ uc=x%10;
if(uc%2==1)
nri++;
x=x/10;
}
return nri;
}
5. Numarul de cifre pare ale luil x
int nr_cif_par(int x)
{ int nrp=0,uc;
while(x>0)
{ uc=x%10;
if(uc%2==0)
nrp++;
x=x/10;
}
return nrp;
}

6. Cifra maxima din x


int cif_max(int x)
{ int cmax=0,uc;
while(x>0)
{ uc=x%10;
if(uc>cmax)
cmax=uc;
x=x/10;
}
return cmax;
}

7. Cifra minima din x


int cif_min(int x)
{ int cmin=9,uc;
while(x>0)
{ uc=x%10;
if(uc<cmin)
cmin=uc;
x=x/10;
}
return cmin;
}

8. Oglinditul lui x
int oglindit(int x)
{ int ogl=0,uc;
while(x>0)
{ uc=x%10;
ogl=ogl*10+uc;
x=x/10;
}
return ogl;
}

9. Suma cifrelor pare din x


int suma_cif_pare(int x)
{ int sp=0,uc;
while(x>0)
{ uc=x%10;
if(uc%2==0)
sp=sp+uc;
x=x/10;
}
return sp;
}
10. Elimina cifra din pozitia k din numarul x

int elimina_cifra(int x, int k)


{ int m=0,uc,nr=0,p=1;
while(x>0)
{ uc=x%10;
nr++;
if(nr!=k)
{ m=m+uc*p;
p=p*10;
}
x=x/10;
}
return m;
}

11. Elimina toate cifrele impare din x


int elimina_cifre_impare(int x)
{ int m=0,uc,p=1;
while(x>0)
{ uc=x%10;
if(uc%2==0)//doar cifrele pare raman in m
{ m=m+uc*p;
p=p*10;
}
x=x/10;
}
return m;
}
12. Elimina toate cifrele pare:
int elimina_cifre_pare(int x)
{ int m=0,uc,p=1;
while(x>0)
{ uc=x%10;
if(uc%2==1)//doar cifrele impare raman in m
{ m=m+uc*p;
p=p*10;
}
x=x/10;
}
return m;
}
13. Verifica daca toate cifrele lui x sunt pare
int verifica_toate_cifrele_pare(int x)
{ int uc;
while(x>0)
{ uc=x%10;
if(uc%2==1)//daca am o cifra impare => fals
return 0;
x=x/10;
}
return 1;// adevarat
}

14. Verifica daca are cel putin o cifra para


int verifica_CEL_PUTIN_O_cifra_para(int x)
{ int uc;
while(x>0)
{ uc=x%10;
if(uc%2==0)//daca am o cifra para => adevararat
return 1;
x=x/10;
}
return 0;// false
}

Probleme cu siruri de numere:

a. Conditia de oprire depinde de ultimul numar

Se citesc numere naturalale pana la citirea unui numar care ......<indeplineste o conditie>. Sa se prelucreze
numerele din sir.

citeste x //primul numar din sir


initializari de variabile in functie de cerinta (daca este cazul)
cat timp (conditia de oprire nu este indeplinita ) executa
-prelucrez x in functie de cerinta, eventual afisare rezultat prelucrare x
-citesc x// urmatorul numar din sir

afisare rezultate(daca depind de toate numerele din sir)

b. Conditia de oprire depinde de ultimele 2 numere din sir


citeste x,y // primele 2 numere din sir
initializari de variabile in functie de cerinta (daca este cazul)
cat timp (conditia de oprire nu este indeplinita ) executa
-prelucrez x si y in functie de cerinta, eventual afisare rezultat prelucrare x,y
x=y; // x primeste valoarea lui y
-citesc y // urmatorul numar y din sir

afisare rezultate(daca depind de toate numerele din sir)

c. Conditia de oprire depinde de ultimele 3 numere din sir


citeste x,y,z // primele 3 numere din sir
initializari de variabile in functie de cerinta (daca este cazul)
cat timp (conditia de oprire nu este indeplinita ) executa
-prelucrez x , y, z in functie de cerinta, eventual afisare rezultat prelucrare x,y
x=y; // x primeste valoarea lui y
y=z; // y primeste valoarea lui z
citesc z // urmatorul numar y din sir

afisare rezultate(daca depind de toate numerele din sir)


Aplicatii instructiunea FOR:
1. Afisare numere crescator din intervalul [1,n]:
cin>>n;
cout<<"elementele intervalului [1,"<<n<<"] crescator sunt"<<endl;
for(i=1;i<=n;i++)
cout<<i<<" ";
cout<<endl;
2. Afisare numere descrescator din intervalul [1,n]:
cin>>n;
cout<<"elementele intervalului [1,"<<n<<"] descrescator sunt"<<endl;
for(i=n;i>=1;i--)
cout<<i<<" ";
cout<<endl;

3. Suma lui Gauss: S=1+2+...+n


cin>>n;
int s=0;
for(i=1;i<=n;i++)
s=s+i;
cout<<"s=1+2+...+"<<n<<"="<<s<<endl;

4. Prelucrare elemente pare din intervalul [1,n]:


cin>>n;
intializari: sume, contor cu 0, produse cu 1;
for(i=1;i<=n;i++)
if(i%2==0)
prelucrare i in functie de cerinta problemei

5. Prelucrare siruri de n(dat) numere:


cin>>n;
intializari: sume, contor cu 0, produse cu 1;
for(i=1;i<=n;i++)
{ cin>>x;//un numar din cele n date
prelucrare x in functie de cerinta problemei
}

6.

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