Va roooooooooooooog urgent in c++ cu functi recursive si iterative
Se consideră tabloul liniar A[1..n] cu elemente numere naturale zecimale. Scrieţi un program care va converti elementele tabloului A[1..n] în numere octale. Programul va folosi subprogramul de convertire respectivă al unui număr zecimal
Răspunsuri la întrebare
#include <iostream>
using namespace std;
int conversie(int n){
//Program conversie baza. CIteste n in baza 10, returneaza n in baza 8
int v[100],m=0,n8=0;
while(n){
v[m++]=n%8;
n=n/8;
}
for(int i=m-1;i>=0;i--){
n8 = n8*10+v[i];
}
return n8;
}
void iterativ(int v[],int n){
int i=1;
for(i=1;i<=n;i++) v[i] = conversie(v[i]);
}
void recursiv(int v[],int n){
v[n]=conversie(v[n]);
if(n>1) recursiv(v,n-1);
}
int main(){
int a[100],n,i,var=0;
//Citire vector
cout << "n = ",cin >> n;
for(i=1;i<=n;i++) cin >> a[i];
//Citire metoda rezolvare
while(var!=1 && var!=2){
cout << "\nIntroduceti [1] pentru varianta iterativa sau [2] pentru varianta recursiva : ";
cin >> var;
}
//Apelare program
if(var==1) iterativ(a,n);
else recursiv(a,n);
//Afisare rezultat
for(i=1;i<=n;i++) cout << a[i] << " ";
}
Mai intai avem declarata functia conversie care citeste un numar n natural in baza 10 si construieste in n8 numarul in baza 8. Metoda e cea simpla, bazata pe rest, invatata in clasa a V-a (motiv pentru care avem nevoie de un vector ce memoreaza restul impartirii)
Ai aici teoria pentru conversie, in caz ca nu iti mai aduci aminte : https://muhaz.org/sisteme-de-calcul-si-reele-de-calculatoare-material-de-predare.html?page=16
Una e iterativa, cealalta e recursiva