Informatică, întrebare adresată de sfse453gs, 8 ani în urmă

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

Răspuns de andrei750238
15

#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] << " ";

}


andrei750238: programul te pune sa introduci n (numărul de numere din vector)
andrei750238: apoi tu introduci cele n numere
andrei750238: după care te pune sa selectezi 1 sau 2 pentru a alege varianta recursivă sau pe cea iterativă de rezolvare a programului
sfse453gs: bine am inteles
sddswegs: Da poti terog mult sami explici pe scurt cum ai facut programul sau cum functioneaza pe pasi
sertghgfddgs: Da poti terog mult sami explici pe scurt cum ai facut programul sau cum functioneaza pe pasi
andrei750238: Codul are comentarii care explica destul de bine intreg procesul.
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
andrei750238: Apoi doua functii care ambele fac aceasi chestie : traverseaza vectorul si convertesc numerele in baza 8.

Una e iterativa, cealalta e recursiva
andrei750238: Functia principala citeste numarul de numere, vectorul, apoi te pune sa selectezi care e metoda prin care vrei sa rezolvi problema (folosind functia recursiva, respectiv cea iterativa). Punand aceasta functionalitate intr-o bucla programul te va obliga sa selectezi o varianta corecta. (fie sa introduci 1, fie sa introduci 2)
andrei750238: Apoi la final se afiseaza rezultatul
Alte întrebări interesante