Red de conocimiento informático - Material del sitio web - Lenguaje C de resta de enteros grandes

Lenguaje C de resta de enteros grandes

#include

#include

#include

char a[1000],b[1000];

int c[1001];

int x,y,i,j,k;

int blen =0;

int alen=0;

char flag = '+'; // Se utiliza para marcar números negativos para la resta

int Subtract(char * a, char *b, int len) { //Para evitar la duplicación de código, extraiga los diferentes cálculos y escríbalos como funciones

int i;

for (i=len -1; i>=0; i--) {

si (a[i] < b[i]) {

c[i] = a[i] + 10 - b [i];

b[i-1]++;

} más {

c[i] = a[i] - b[i ];

}

}

devuelve 0;

}

int Resta() {

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

{

scanf("%c",&b[i]);

if(b[i]=='\n')

descanso;

blen++;

}

printf( "=");

if(alen>blen)

{

x=(alen-blen);

for( i=blen-1;i>=0;i--)

{

alen--;

b[alen]=b [i] ;

}

para (i=0;i

b[i]='0';

alen=blen+x;

blen=alen;

} else if (blen > alen) {

x=(blen-alen );

for(i=alen-1;i>=0;i--)

{

blen--;

a [blen]=a[i];

}

para (i=0;i

a[i] ='0 ';

blen=alen+x;

alen=blen;

}

para (i=alen- 1;i >=0;i--) {

a[i]=a[i]-'0';

b[i]=b[i]- '0' ;

}

if (strcmp(a, b) > 0) {

Restar(a, b, alen);

}else {

flag = '-';

Restar(b, a, alen);

}

devolver 0 ;

}

int A

adición(){

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

{ scanf("%c",&b[i]);

if(b[i]=='\n')

descanso;

blen++;

}

printf(" =");

if(alen>blen)

{

x=(alen-blen);

for(i =blen-1;i>=0;i--)

{

alen--;

b[alen]=b[i];

}

para (i=0;i

b[i]='0';

alen=blen+x;

} else if (blen > alen) {

x=(blen-alen);

for(i=alen- 1;i>=0;i--)

{

blen--;

a[blen]=a[i];

}

for (i=0;i

a[i]='0';

blen=alen +x;

alen=blen;

}

for (i=alen-1;i>=0;i--) {

a[i]=a[i]-'0';

b[i]=b[i]-'0';

si(c[ i+1]+a[i]+b[i]>=10)

{

c[i]=(c[i+1]+a[i] +b[i])/10;

c[i+1] = (c[i+1]+a[i]+b[i])%10;

}

else

{

c[i+1]+=(a[i]+b[i]);

}

}

devuelve 0;

}

int main()

{

para (i=0;i<100;i++)

a[i]=0

para (i=0;i<100;i++)

b[i]=0;

para (i=0;i<101;i++)

c[i]=0; >

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

{

scanf("%c",&a[i]);

if(a[i]=='+')

{

Suma();

ir a salida1;

}

if(a[i]=='-')

{

Resta();

ir a salida2; p>

}

alen++;

}

salida1:

{

para (yo =0;yo<

;=alen;i++)

printf("%d",c[i]);

devuelve 0;

}

salida2:

{

printf("%c", bandera);

for (i=0;i

printf("%d",c[i]);

devuelve 0;

}

}

Resultado de la ejecución del código:

123456789-12345

=+123444444

Terminado con código de retorno 0

Presione cualquier tecla para continuar. .

123456+111111

=0234567

Terminado con código de retorno 0

Presione cualquier tecla para continuar...

1000000-1

=+0999999

Terminado con código de retorno 0

Presione cualquier tecla para continuar...

1-1000000

=-0999999

Terminado con código de retorno 0

Presione cualquier tecla para continuar...

// ¡Hecho con tu código! Espero que te ayude en tu estudio.