Răspuns:
void numar(unsigned int n, unsigned int c, int &m)
{
unsigned int p=1;
m=-1;
while(n!=0)
{
if(m<0 && n%10!=c)
m=0;
if(n%10!=c)
{
if(n%10!=0)
{
m+=p*(n%10);
p*=10;
}
}
n/=10;
}
}
Explicație:
Consideram initial ca numarul nostru n are toate cifrele egale cu c, asadar m va avea valoarea -1, apoi la prima intalnire a unei cifre diferite de c, m devinde 0 (ca sa putem sa formam numarul din cifrele diferite de c), pentru cifrele diferite de c, inclusiv 0 (aceste fiind ignorate), m=m+p*(n%10) si p=p*10. Avem un caz in care c este 0, pentru n=0, m ramane -1, deci algoritmul este corect, poti verifica cu orice valoare. Daca ai nedumeriri sau imi scrii com.