Se citeşte un număr natural, n (n≥1), şi se cere să se scrie numărul obţinut prin duplicarea
fiecărei cifre pare a lui n sau -1 dacă acesta nu are nicio cifră pară.
Exemplu: dacă n=2380 se scrie
2238800
Scrieți un program in C++
Răspunsuri la întrebare
#include <iostream>
using namespace std;
int main(){
int x,y;
cin >> x;
bool areCifPare=false;
y = 0;
int zf = 0;
while(x!=0){
y=y*10+x%10;
if(x%10==0)zf++;
areCifPare= areCifPare || x%2==0;
x/=10;
}
if(!areCifPare){cout<<"-1"; return 0;}
while (y){
int c=y%10;
if (c%2==0)
x = x*100+11*c;
else x = x*10+c;
y/=10;
}
cout << x;
for(int i = 0; i < zf; i++)
cout << "00";
cout <<'\n';
return 0;
}
Răspuns:
#include <iostream>
using namespace std;
long long n,cif,p=1,nou,exista;
int main()
{
cin >> n;
while (n)
{
cif=n%10;
if (cif%2==0)
{
exista=1;
nou=cif*p+nou;
p=p*10;
nou=cif*p+nou;
}
else
{
nou=cif*p+nou;
}
p*=10;
n/=10;
}
if (exista) cout << nou;
else cout << -1;
}
Explicație: