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
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;
}
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
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă