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