Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- using namespace std;
- int nrCifre(int);
- int eliminareCifraMijloc_Impare(int);
- int eliminareCifreMijloc_Pare(int);
- int putere (int, int);
- int main()
- {
- int pb;
- cout << "Introdu nr probl"<<endl; cin>>pb;
- switch(pb){
- case 1:{
- /*Se citeste un numar natural, n. Sa se calculeze cifra sa de control, definite conform algoritmului sugerat de exemplul de mai jos.
- Ex: daca n=997788, se calculeaza suma cifrelor, s=48; deoarece aceasta nu e o cifra, se calculeaza suma cifrelor acesteia,
- 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 */
- int n; cout<<"n="; cin>>n;
- int s=0, s_nou;
- for (int i=n; i; i/=10)
- s+=i%10;
- while (s>9){
- int s_nou = 0;
- for (int i=s; i; i/=10)
- s_nou+=i%10;
- s=s_nou;
- }
- cout<<"Cifra de control este "<<s;
- break;
- }
- case 2:{
- /* 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
- 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.
- Ex: daca n=32456, se va afisa numarul 3256; daca n=3472, se va afisa numarul 32. */
- int n; cout<<"n="; cin>>n;
- if (nrCifre(n)%2) cout<<eliminareCifraMijloc_Impare(n);
- else cout<<eliminareCifreMijloc_Pare(n);
- break;
- }
- case 3:{
- /* Se citeste un numar natural, n. Sa se genereze si sa se afiseze numarul obtinut prin dublarea tuturor cifrelor sale impare.
- Ex: daca n=234355, se va afisa numarul 2334335555 */
- int n; cout<<"n="; cin>>n;
- int n_nou=0;
- while (n){
- n_nou=n_nou*10+n%10;
- if ((n%10)%2)
- n_nou=n_nou*10+n%10;
- n/=10;
- }
- int inv=0;
- while (n_nou){
- inv=inv*10+n_nou%10;
- n_nou/=10;
- }
- cout<<"Nr format este "<<inv<<endl;
- }
- }
- return 0;
- }
- int nrCifre (int n){
- int k=0;
- while (n){
- n/=10;
- k++;
- }
- return k;
- }
- int putere(int x, int y)
- {
- int v = 1;
- for(int i = 1; i<=y; i++)
- v*=x;
- return v;
- }
- int eliminareCifraMijloc_Impare(int n){
- int primeleCifre=n/(putere(10, (nrCifre(n)/2 + 1)));
- int k= (putere(10,(nrCifre(n)/2)));
- int ultimeleCifre=n%k;
- int nrNou=primeleCifre*putere(10, (nrCifre(ultimeleCifre)))+ultimeleCifre;
- return nrNou;
- }
- int eliminareCifreMijloc_Pare (int n){
- int primeleCifre=n/(putere(10, ((nrCifre(n)-2)/2 +2)));
- int k= putere(10, ((nrCifre(n)-2)/2));
- int ultimeleCifre=n%k;
- int nrNou=primeleCifre*putere(10, (nrCifre(ultimeleCifre)))+ultimeleCifre;
- return nrNou;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement