Răspuns :
Varianta folosită e rescrierea și înlocuirea când se rescrie în altă variabilă, dar dacă vrei să faci cu înlocuire, se poate și așa. O să dau un exemplu unde s-ar înlocui o singură cifră, și apoi doar repeți procesul la celelalte:
n=123456 (înlocuim 4 cu 9, de exemplu)
Parcurgem fiecare cifră, de la coadă, și presupunem că am ajuns la a 3-a
x = 3;
Ca să aflăm cifra, facem așa:
n % pow(10, x) / pow(10, x-1)
(Ar fi: n % pow(10, 3) / pow(10, 2) = n % 1000 / 100, care bănuiesc că îți dai seama că fa scoate a x-a cifră)
Acum, verificăm dacă a 3-a(x-a) cifră este cea care o înlocuim. Dacă nu este, creștem x-ul(trecem la cea de mai la stânga), iar dacă e, trebuie înlocuită. Asta se face așa: se ia partea din număr de la stânga cifrei înlocuite(fiind int, se împarte la 10^x), se înmulțește cu 10, se adaugă noua cifră, iar apoi se înmulțește cu 10^(x-1), iar apoi se adaugă restul de după cifra înlocuită (n%(10^(x-1))).
Deci formula ar fi:
n = ( ( n / pow(10, x) ) * 10 + Noua_cifră ) * pow(10, x-1) + n % pow(10, x-1);
Mai practic, pe exemplul nostru(n fiind 123456, x fiind 3, noua_cifră fiind 9):
n = ( ( n / 1000 ) * 10 + noua_cifră ) * 100 + n % 100;
( ( 123456 / 1000 ) * 10 + 9 ) * 100 + 123456 % 100
( ( 123 * 10 + 9 ) * 100 + 56 )
( 1239 * 100 + 56 )
( 123900 + 56 )
123956
*pow(x, y) e echivalent cu x^y (x la puterea y), și ca să îl folosești ai nevoie de librăria <math.h>, dar dacă nu vrei librăria asta, poți folosi și un simplu for, la fiecare pow de care ai nevoie:
r = 1;
x = 10;
y = 3;
for(i=0;i<y;i++) r = r * x;
și ai în r rezultatul puterii
n=123456 (înlocuim 4 cu 9, de exemplu)
Parcurgem fiecare cifră, de la coadă, și presupunem că am ajuns la a 3-a
x = 3;
Ca să aflăm cifra, facem așa:
n % pow(10, x) / pow(10, x-1)
(Ar fi: n % pow(10, 3) / pow(10, 2) = n % 1000 / 100, care bănuiesc că îți dai seama că fa scoate a x-a cifră)
Acum, verificăm dacă a 3-a(x-a) cifră este cea care o înlocuim. Dacă nu este, creștem x-ul(trecem la cea de mai la stânga), iar dacă e, trebuie înlocuită. Asta se face așa: se ia partea din număr de la stânga cifrei înlocuite(fiind int, se împarte la 10^x), se înmulțește cu 10, se adaugă noua cifră, iar apoi se înmulțește cu 10^(x-1), iar apoi se adaugă restul de după cifra înlocuită (n%(10^(x-1))).
Deci formula ar fi:
n = ( ( n / pow(10, x) ) * 10 + Noua_cifră ) * pow(10, x-1) + n % pow(10, x-1);
Mai practic, pe exemplul nostru(n fiind 123456, x fiind 3, noua_cifră fiind 9):
n = ( ( n / 1000 ) * 10 + noua_cifră ) * 100 + n % 100;
( ( 123456 / 1000 ) * 10 + 9 ) * 100 + 123456 % 100
( ( 123 * 10 + 9 ) * 100 + 56 )
( 1239 * 100 + 56 )
( 123900 + 56 )
123956
*pow(x, y) e echivalent cu x^y (x la puterea y), și ca să îl folosești ai nevoie de librăria <math.h>, dar dacă nu vrei librăria asta, poți folosi și un simplu for, la fiecare pow de care ai nevoie:
r = 1;
x = 10;
y = 3;
for(i=0;i<y;i++) r = r * x;
și ai în r rezultatul puterii
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Ne dorim ca informațiile furnizate să vă fi fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Revenirea dumneavoastră ne bucură, iar pentru acces rapid, adăugați-ne la favorite!