Subprogramul numar are trei parametri:
• n și c, prin care primește câte un număr natural (n[0,109], c[0,9]);
• m, prin care furnizează numărul obținut din n, prin eliminarea din acesta a tuturor cifrelor egale cu c, sau
-1 dacă toate cifrele lui n sunt egale cu c. Cifrele nule nesemnificative sunt ignorate, ca în exemplu.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n=50752 sau n=72 și c=5, după apel m=72, dacă n=500 și c=5, după apel m=0, iar
dacă n=55 și c=5, după apel m=-1.
Răspunsuri la întrebare
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.