Produsul numerelor mari

Produsul dintre un numar mare si o cifră

Pentru a realiza înmulțirea dintre un număr mare si o cifră se va înmulți cifră cu cifră, începând cu cifra unităților, fiecare cifră a numărului mare cu cifra dată, adunînd un eventual transport obținut din înmulțire precedentă. Dacă la sfârșit mai avem un transport cae nu a fost cuprins în rezultat, îl copiem cifră cu cifră în continuarea rezultatului.

Funcția inmultireCifra() are urmatorii parametri:

    • 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

    • cifra cu care se înmulțește numărul a cif: int cif;// transmis prin valoare

    • numar mare obtinut ca rezultat al operatiei a*cif: 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

//inmultirea unui numar mare si o cifra

void inmultireCifra(char a[],int lga, int cif, char rez[], int &lgrez)

{

int i,aux,t=0;

//parcurgem numarul a si inmultim cifra cu cifra

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

{

aux=a[i]*cif+t;

t=aux/10;

rez[i]=aux%10;

}

//initializam lungimea rezultatului cu lungimea lui a

lgrez=lga;

//daca mai avem transport il adaugam la numar

while(t)

{

rez[lgrez++]=t%10;

t=t/10;

}

}

Observatie: trebuie să avem grijă și de această dată la declararea vectorului rezultat char rez[], deoarece el poate avea mai multe cifre decât numărul care se înmulțește.

Apel: dacă a=9999 și cif=3 atunci rezultatul afisat este c=29997

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

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

afisare(c,lgc);