Cite stie sa faca aceste 2 probleme in C++???
1.Se da un nr cu max 4 cifre.Sa se afiseze un nou numar la care cifrele impare sa se dubleza.
x=1234
x=112334
2.Se d un numar x cu maxim 9 cifre.Sa se afiseze cifra din mijloc.
x=52413 x=2056
mijlocul=4 mijlocul=5 sau 6
Răspunsuri la întrebare
Explicație:
Lecţia 6 – Algoritmi pentru prelucrarea cifrelor, cmmdc, divizori primi
Clasa a V-a
1
Algoritmi pentru prelucrarea cifrelor, cmmdc, divizori primi
Prelucrarea cifrelor unui număr
if (n == 0) //prelucrare numarul 0
while (n > 0) {
cif = n%10;
//operatii care prelucreaza
//cifra curenta conform problemei
n = n / 10;}
do{
cif = n%10;
//operatii care prelucreaza
//cifra curenta conform problemei
n = n / 10;
} while (n > 0);
ATENȚIE! Prin spargerea unui număr în cifre, valoarea inițială se distruge.
Dacă mai aveți nevoie de ea în program, trebuie să-i faceți o copie lui n înainte de a-l sparge
a. calcularea numarului de cifre a lui n:
nrcif = 0;
if (n == 0) nr = 1;
while (n > 0) {
nrcif++;
n = n / 10;
}
nrcif = 0;
do{
nrcif++;
n = n / 10;
} while (n > 0);
b. determinarea primei cifre a numărului n
while (n > 9)
n = n / 10;
prima_cifra = n;
c. determinarea oglinditului lui n (numărul care conține cifrele lui n în ordine inversă)
oglindit = 0;
while (n > 0) {
cif = n % 10;
oglindit = oglindit * 10 + cif;
n = n / 10;
}
ATENȚIE! La oglindirea unui număr terminat cu cifre de 0, aceste cifre 0 se pierd deoarece devin zerouri
nesemnificative, în fața primei cifre a oglinditului.
d. extragerea cifrelor lui n în ordinea în care apar în numar
//determinăm cea mai mare putere a lui 10, care este mai mică sau egală decât numărul n
p = 1;
while (p * 10 <= n) p = p * 10;
while (n > 0) {
cif = n / p;
//prelucreaza cif conform cerintelor problemei
n = n % p;
}