Lenguaje c de resta de enteros grandes
# incluir & ltstdlib.h & gt
# incluir & ltstring.h & gt
char a[1000] , b[1000];
int c[1001];
int x, y, j, k
int blen = 0; /p>
int alen = 0;
char flag = '+'; // Se utiliza para restar el número negativo de la bandera.
Intsubtract (char * a, char * b, int len) {// Para evitar la duplicación de código, extrae el cálculo de * * * y escríbelo como una función.
int I;
for(I = len-1;I>=0;I-) {
if(a[I]& lt ;b [i]) {
c[I]= a[I]+10-b[I];
b[I-1]++;
}En caso contrario{
c[I]= a[I]-b[I];
}
}
devolver 0;
}
int resta(){
for(I = 0;i<100;i++)
{ p>
scanf("%c ", & ampb[I]);
if(b[i]=='\n ')
Romper; p>
blen++;
}
printf(" = ");
if(alen & gt;blen)
p>
{
x =(alen-blen);
for(I = blen-1;i>=0;i-)
{
alen-;
b[alen]= b[I];
}
for(I = 0 ; i<x;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];
}
for(I = 0;i<x;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;
}
if (strcmp(a, b) >0) {
Restar (a, b, alen);
} En caso contrario {
flag = '-';
Restar (b, a, alen ); p>
}
Devuelve 0;
}
int suma(){
for(I = 0;i<100 ;i++)
{ scanf("%c ",&b[I]);
if(b [i]=='\n ')
Pausa;
blen++;
}
printf(" = ");
if(alen & gt;blen)
{
x =(alen-blen);
for(I = blen -1;I>=0;I-)
{
alen-;
b[alen]= b[I];
}
for(I = 0; i<x;i++)
b[I]= '0';
alen = blen +x;
} else if(blen & gt;alen) {
x =(blen-alen);
for(I = alen-1 ;I>=0;I-)
{
blen-;
a[blen]= a[I];
p>
}
for(I = 0;i<x;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;
if(c[I+ 1]+a[ I]+b[I]& gt;=10)
{
c[I]=(c[I+1]+a[I] +b[I] )/10;
c[I+1]=(c[I+1]+a[I]+b[I])% 10;
}
Otros
{
c[I+1]+=(a[I]+b[I]);
} p>
}
Devuelve 0;
}
int main()
{ p>
for(I = 0;i<100;i++)
a[I]= 0;
for(I = 0;i<100;i++)
b[ I]= 0;
para(I = 0;i<101;i++)
c[I]= 0;
para(I = 0;i<100 ;i++)
{
scanf("%c ",&a[I]);
if(a[i]=='+')
{
Agregar();
ir a la salida 1;
}
if(a[i ]=='-')
{
Resta();
ir a salida2
}
alen++;
}
Salida 1:
{
para (I = 0;i<=aleni++)
printf("%d ",c[I]);
Devuelve 0;
}
Salida 2:
{
printf("%c ", bandera);
for(I = 0; i< Allen; 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 el código de retorno 0
Presiona cualquier tecla para continuar...
//¡Qué le hizo a tu código! Espero que sea útil para su estudio.