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);