Răspuns :
Acum că știi cât de costisitoare era înlocuirea în numărul inițial, o să vezi cât de ușoară e la rescriere:
o să avem o variabilă d care o vom tot înmulți cu 10 pentru a obține pe rând 1, 10, 100, 1000, etc, ca să rescriem numărul, și o variabilă n2 în care o să fie numrăul rescris
d = 1;
n2 = 0;
//Acum, luăm cifrele numărului n, cu un while, pe rând, până nu mai rămâne cu cifre:
while(n>0){
//Acum luăm cifra din capătul lui n
t = n % 10;
//O înlocuim dacă este nevoie
if(t==c1) t=c2;
//Acum o scriem în n2, pe poziția d(cum ar veni, el zice dacă e numărul unității, numărul zecilor, numărul sutelor, numărul miilor, etc, pur și simplu înmulțind cifra cu d(*1 sau *10 sau *100 sau *1000 etc)
n2 = n2 + t*d;
//Fiindcă am terminat cu această cifră și urmează să trecem la următoarea, creștem d-ul (îl înmulțim cu 10, ca să mai punem un 0), iar apoi scoatem ultima cifră din n
d = d * 10;
n = n / 10;
}
Și asta ar fi tot, afișăm n2(dacă vrei, îl copii în n, și afișezi n), și gata. Acum să îl rescriem pe tot:
#include <iostream>
using namespace std;
int main(){
int n, c1, c2, t, n2=0, d=1;
cin>>n;
cin>>c1;
cin>>c2;
while(n>0){
t = n%10;
if(t==c1) t = c2;
n2 = n2 + t * d;
d = d * 10;
n = n/10;
}
cout<<n2;
}
Acum, opțional, niște optimizări de pentru lungimea codului :D
#include <iostream>
int main(){
int n, c1, c2, n2=0, d=1;
std::cin>>n>>c1>>c2;
while(n)
n2 += (n%10==c1?c2:n%10) * d, d*=10, n/=10;
std::cout<<n2;
}
o să avem o variabilă d care o vom tot înmulți cu 10 pentru a obține pe rând 1, 10, 100, 1000, etc, ca să rescriem numărul, și o variabilă n2 în care o să fie numrăul rescris
d = 1;
n2 = 0;
//Acum, luăm cifrele numărului n, cu un while, pe rând, până nu mai rămâne cu cifre:
while(n>0){
//Acum luăm cifra din capătul lui n
t = n % 10;
//O înlocuim dacă este nevoie
if(t==c1) t=c2;
//Acum o scriem în n2, pe poziția d(cum ar veni, el zice dacă e numărul unității, numărul zecilor, numărul sutelor, numărul miilor, etc, pur și simplu înmulțind cifra cu d(*1 sau *10 sau *100 sau *1000 etc)
n2 = n2 + t*d;
//Fiindcă am terminat cu această cifră și urmează să trecem la următoarea, creștem d-ul (îl înmulțim cu 10, ca să mai punem un 0), iar apoi scoatem ultima cifră din n
d = d * 10;
n = n / 10;
}
Și asta ar fi tot, afișăm n2(dacă vrei, îl copii în n, și afișezi n), și gata. Acum să îl rescriem pe tot:
#include <iostream>
using namespace std;
int main(){
int n, c1, c2, t, n2=0, d=1;
cin>>n;
cin>>c1;
cin>>c2;
while(n>0){
t = n%10;
if(t==c1) t = c2;
n2 = n2 + t * d;
d = d * 10;
n = n/10;
}
cout<<n2;
}
Acum, opțional, niște optimizări de pentru lungimea codului :D
#include <iostream>
int main(){
int n, c1, c2, n2=0, d=1;
std::cin>>n>>c1>>c2;
while(n)
n2 += (n%10==c1?c2:n%10) * d, d*=10, n/=10;
std::cout<<n2;
}
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!