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() { p>
for (i=0;i<100;i++)
{
scanf("%c",&b[i]); p>
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() { p> 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> 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.