fbpx

Problema #3119 – Impare_Bac – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Subprogramul Impare are un singur parametru, n, prin care primește un număr natural. Subprogramul înlocuiește fiecare cifră impară a lui n cu cea mai mare cifră pară strict mai mică decât ea (astfel cifra 1 se înlocuieşte cu cifra 0, cifra 3 cu cifra 2 etc.) și furnizează numărul obținut tot prin parametrul n.

Scrieți definiția completă a subprogramului.

Restricții și precizări

  • 1 ≤ n ≤ 1.000.000.000
  • Numele funcției va fi Impare
  • Funcția va primi un singur parametru, numărul n, iar la finalul funcției n va avea valoarea cerută.

Exemplu

Dacă n=235690, atunci, după apel, n=224680, iar dacă n=15690, atunci, după apel, n=4680.

Important

Soluția propusă va conține doar definiția funcției cerute. Prezența în soluție a altor instrucțiuni poate duce la erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.

void Impare(int &n)
{
    int a[11], x = 0;
    while(n)
    {
        a[x] = n % 10;
        n/=10;
        x++;
    }
    int p = 1;
    for(int i = 0 ; i < x; ++i)
    {
        if(a[i] % 2 == 1)
            a[i] --;
        n = n + a[i] * p;
        p *= 10;
    }
}
Comentarii

S-ar putea sa iti placa