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;

}