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 reţinute în tabloul a sau valoarea -1 dacă în tablou nu există nicio cifră pară.
Subprogramul meu primeste 80 pe pbinfo. Nu stiu cum sa fac sa construiesc un numar in cazul in care citesc de la tastatura 0 0 2 2, de exemplu. Mie imi afiseaza 22
void F(int n, int a[9], int &k)
{
if(n > 0)
{
F(n-1,a,k);
if(a[n-1]%2 == 0)
k = k * 10 + a[n-1];
}
else k = 0;
}
Răspunsuri la întrebare
Răspuns de
2
Problema nu e cu zerourile dinaintea numarului, ci la cazul in care nu sunt cifre pare. In cazul in care nu exista cifre pare in numar, k trebuie sa devina -1.
void F(int n, int a[9], int &k)
{
if(n > 0)
{
F(n-1,a,k);
if(a[n-1] % 2 == 0)
{
if(k == -1) k = 0;
k = k * 10 + a[n-1];
}
}
else k = -1;
}
void F(int n, int a[9], int &k)
{
if(n > 0)
{
F(n-1,a,k);
if(a[n-1] % 2 == 0)
{
if(k == -1) k = 0;
k = k * 10 + a[n-1];
}
}
else k = -1;
}
Alte întrebări interesante
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă