Informatică, întrebare adresată de booth130921, 9 ani în urmă

Scrieți definiția completă a subprogramului recursiv F, care primește prin intermediul parametrului n un număr natural nenul (1≤n≤9), iar prin intermediul parametrului a, un tablou unidimensional care conţine n valori naturale, fiecare dintre acestea reprezentând câte o cifră a unui număr. Astfel, a0 reprezintă prima cifră a numărului, a1 a doua cifră, etc.

Subprogramul furnizează prin parametrul k o valoare naturală egală cu numărul obţinut din cifrele pare memorate în tabloul a sau valoarea -1 dacă în tablou nu există nicio cifră pară.

Restricţii şi precizări
0 < n < 10
numele subprogramului cerut este F
parametrii sunt, în această ordine: n, a, k
elementele vectorului a sunt indexate de la zero
valoarea lui k nu va depăși 2000000000
se recomandă realizarea unei soluții recursive

Răspunsuri la întrebare

Răspuns de Daniel4761
2

void F(int n, int a[10], int &k){

if(n>=0)

 if(a[n]%2==0){k=k*10+a[n]%10; F(n-1,a,k);}

 else F(n-1,a,k);

else if(k==0) k=-1;

else{

 int inv=0;

 while(k){inv=inv*10+k%10; k=k/10;}

 k=inv;

}

}


Daniel4761: Sa scrii n-- inainte de a apela functia
Daniel4761: sper ca te-am ajutat
booth130921: inainte de care apel pun n--?
Daniel4761: da
Daniel4761: aa =))
Daniel4761: pai inainte sa apelezi functia in main
Daniel4761: sau lasa asa..
Daniel4761: sper ca iti convine metoda
booth130921: ceva nu e bine,ca da 0 puncte:))
Daniel4761: inseamna ca nu convine metoda
Alte întrebări interesante