Informatică, întrebare adresată de Reme99, 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ă.

Răspunsuri la întrebare

Răspuns de blindseeker90
13
#include <iostream>
using namespace std;

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

//daca am ajuns la primul termen al sirului
if(n==0){
//daca acel termen e par, parametrul k devine prima cifra
if(a[0]%2==0){
k=a[0];
}
//daca nu, atat cat stim, nu exista cifre pare, deci k devine -1
else{
k=-1;
}
return;
}
//recursiv apelam la functie pentru acelasi sir dar cu o valoare mai mica
F(n-1,a,k);
//daca termenul curent este par, atunci
if(a[n-1]%2==0){
    //daca nu am mai gasit vreun termen par pana atunci, atunci facem pe k=0
    //aratand astfel ca cel putin o cifra este para
if(k==-1){
k=0;
}
//adauga la numarul final cifra gasita
k=10*k+a[n-1];

}


}

int main(){

int n,a[10],i,rez;
cout<<"Introduceti nr termeni:";
cin>>n;
cout<<"Introduceti cifrele numarului:";
for(i=0;i<n;i++){
cin>>a[i];
}
F(n,a,rez);
cout<<"Numar rezultat:"<<rez;
return 0;
}
Alte întrebări interesante