Compararea numerelor mari
Compararea a doua numere mari
Compararea a două numere mari, memorate în siruri de caractere presupune parcurgerea următoarlor etape:
Etapa 1: Comparăm lungimile celor două șiruri:
dacă numărul de cifre a numărului a este mai mic decât numărul de cifre a numărului b atunci a este mai mic decât b (a<b).
dacă numărul de cifre a numărului b este mai mic decât numărul de cifre a numărului a atunci b este mai mic decât a (b<a).
Etapa 2: Daca cele duă numere au număr egal de cifre, atunci parcurgem cele două numere începând cu cifra cea mai semnificativă (cu cel mai mare indice din vector) până la întâlnire a două cifre diferite sau până la epuizarea cifrelor. Dacă am întâlnit două cifre distincte în cele două numere(a[i]!=b[i]), ele determină ordinea dintre numărul a și numărul b. În caz contrar, numerele sunt egale.
Funcția compara() va avea patru parametri si anume:
numărul a - șirul de caractere char a[]; //transmitere prin referintă, constanta de tip pointer la primul element din șir
numărul de cifre al numărului a - un număr de tip int : int lga; // transmitere prin valoare
numărul b - șirul de caractere char b[]; //transmitere prin referintă, constanta de tip pointer la primul element din șir
numărul de cifre al numărului b - un număr de tip int : int lgb;// transmitere prin valoare
Rezultatul funcției va fi:
-1, dacă a<b;
0, daca a=b
1, daca a>b
//compararea a doua numere mari
int compara(char a[], int lga, char b[], int lgb)
{
int i;
//daca a are mai putine cifre decat b
if(lga<lgb)
return -1;
//daca b are mai putine cifre decat b
if(lgb<lga)
return 1;
//daca au numar egal de cifre atunci incep sa le compar
for(i=lga-1;i>=0;--i)
if(a[i]<b[i])
return -1;//a este mai mic
else
if(a[i]>b[i])
return 1;
//daca toate cifrele sunt egale
return 0;
}