Informatică, întrebare adresată de JavierLuis, 8 ani în urmă

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 de mirceaadi04otfsmo
9

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.

Alte întrebări interesante