Impartirea numerelor mari
Impartirea unui numar mare si o putere a lui 10
Această operație presupune determinarea restului și a câtului împărțirii numărului mare a la 10p. Restul va fi compus din ultimele nr cifre din numărul a(cifrele de de pe pozițiile 0 până la p-1), iar câtul va fi compus din restul cifrelor(cifrele de pe pozițiile p până la lga-1).
Dacă p este mai mare decât lungimea numărului mare, atunci restul va fi egal cu numărul mare în întregime, iar câtul va fi egal cu zero.
Funcția împarțirePutere10() are următorii parametri:
primul număr a: char a[]; //transmis prin referință, fiind o constantă pointer la primul caracter din șir
numărul de cifre din primul număr: int lga; //transmis prin valoare
valoarea lui p: int p; //transmis prin valoare
catul impartirii a:10p: char cat[]; //transmis prin referință, fiind o constantă pointer la primul caracter din șir
numărul de cifre din al câtului lgcat: int &lgcat; //transmis prin referință, se modifică în funcție
restul obțiut în urma operatiei a:10p: int &rest; //transmis prin referință, se modifică în funcție
//impartirea unui numar mare la o putere a lui 10
void impartirePutere10(char a[],int lga, int p, char cat[], int &lgcat,int &rest)
{
int i=1;
//formez restul
for(i=min(p-1,lga);i>=0;--i)
rest=rest*10+a[i];
//formez catul
for(i=p;i<lga;i++)
cat[i-p]=a[i];
//numarul de cifre ale catului
lgc=lga-p;
//daca p>lga=>restul este a si catul este 0
if(p>lga)
{
lgcat=0;
cat[0]=0;
}
}