HELP
Cerinţa
Scrieți definiția completă a subprogramului C++ recursiv P care primeşte prin intermediul parametrului n un număr natural nenul (n≤100), iar prin intermediul parametrului x un tablou unidimensional cu n componente întregi, de maximum șase cifre fiecare.
Subprogramul furnizează prin intermediul parametrului s suma elementelor din tabloul x care au valori numere prime.
Restricţii şi precizări
0 < n ≤ 100
numele subprogramului cerut este P
parametrii sunt, în această ordine: x, n, s
elementele vectorului x sunt indexate de la zero
se recomandă realizarea unei soluții recursive
Exemplu
Dacă n=6 și x=(12, 7, 6, 3, 8, 5), după apel s=15.
Important
Soluţia propusă va conţine definiţia subprogramului cerut și eventual al altor subprograme, apelate de acesta. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
Aceasta este solutia mea:
int prim(int a){
int c=1;
if(a<2)
return 0;
for(int i=2; i*i<=a; i++){
if(a%i==0)
c=0;
}
return c;
}
int P(int x[], int n, int s){
if(n==0)
return 0;
else{
if(prim(x[n-1])!=0)
s=s+x[n-1];
return P(x, n-1, s);
}
}
SI NU INTELEG DE CE NU MERGE
Va rog mult, AJUTOR!
Răspunsuri la întrebare
Răspuns de
1
In primul rand, subprogramul tau nu are voie sa returneze ceva. In cerinta e precizat sa se furnizeze prin parametrul s, deci ai un subprogram void si ai nevoie de ampersant la s...In al doilea rand, sirul incepe numerotarea de la 0
Aceasta este solutia:
void P(int x[], int n, int &s){
if(n!=-1)
P(x,n-1,s);
if(prim(x[n])!=0)
s=s+x[n];
}
Aceasta este solutia:
void P(int x[], int n, int &s){
if(n!=-1)
P(x,n-1,s);
if(prim(x[n])!=0)
s=s+x[n];
}
Saharra:
Multumesc mult! :)
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Chimie,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Geografie,
9 ani în urmă