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;

}

}