Produsul numerelor mari

Produsul unui numar mare si o putere a lui 10

Această opeație este relativ simplu de realizat. Pentru a înmulți un număr mare cu 10p trebuie să adăugăm la sfîrșitul numărului mare p zerouri, adică să deplasăm cifrele numărului mare reținute în vectorul a cu p poziții spre dreapta si să completăm pozițiile libere cu 0.

Funcția inmultirePutere10() va avea cinci parametri astfel:

    • numărul mare a: char a[]; //transmis prin referință, fiind o constantă pointer la primul caracter din șir

    • numărul de cifre a numărului mare a: int lga; //transmis prin valoare

    • puterea lui 10 notată p: int p;// transmis prin valoare

    • numar mare obtinut ca rezultat al operatiei a*10p: char rez[]; //transmis prin referință, fiind o constantă pointer la primul caracter din șir

    • numărul de cifre al numarului rezultat: int lgrez; //transmis prin referință, se modifică în funcție

//podusul dintre un numar mare si o putere a lui 10

void inmultirePutere10(char a[],int lga, int p, char rez[], int &lgrez)

{

// a* 10^p

int i;

//completez rezultatul cu p zerouri

for(i=0;i<p;++i)

rez[i]=0;

//adaug la sfarsitul rezultatului cifrele numarului mare

for(i=0;i<lga;++i)

rez[p+i]=a[i];

//actualizez numarul de cifre al rezultatului

lgrez=p+lga;

}

Apelul funcției: dacă considerăm valoarea lui p=3 atunci:

inmultirePutere10(a,lga,3,c,lgc);

cout<<"a*10^3 este: "<<endl;

afisare(c,lgc);

Exemplu: dacă a=1234 si p=3 atunci a*103=1234000