J
Jenny
/*I made this program to do substraction between two integers
whose digits are beyond the limit of a long int on my system
but the program can only execute within 10 digits.What's more only
under the condition "i>j"and "i==j"does the program work
successfully..Why?Can you help me?
Thanks a lot */
#include<stdio.h>
#include<stdlib.h>
int remainder[21],remainder1[21],remainder2[21];
int main()
{
long integer1,integer2;
int i,j,n;
scanf("%ld%ld",&integer1,&integer2);
for(n=1;n<=20;n++){
remainder1[n] = integer1 % 10;
integer1 = (integer1 - remainder1[n]) / 10;
remainder2[n] = integer2 % 10;
integer2 = (integer2 - remainder2[n]) / 10;
}
for(i=20;remainder1 == 0
i--;
for(j=20;remainder1[j] == 0
j--;
if(i>j){
for(n=0;n<=20;n++){
if(remainder1[n]<remainder2[n]){
remainder1[n]+=10;
remainder1[n+1]-=1;
}/*end if*/
remainder[n]=remainder1[n]-remainder2[n];
}/*end for*/
for(;i>=1;i--)
printf("%d",remainder);
}/*end if*/
if(i==j){
for(;remainder1==remainder2
i--;
if(remainder1>remainder2){
for(n=0;n<=20;n++){
if(remainder1[n]<remainder2[n]){
remainder1[n]+=10;
remainder1[n+1]-=1;
}/*end if*/
remainder[n]=remainder1[n]-remainder2[n];
}/*end for*/
for(;remainder==0
i--;
for(;i>=1;i--)
printf("%d",remainder);
}/*end if*/
if(remainder2>remainder1){
for(n=0;n<=20;n++){
if(remainder2[n]<remainder1[n]){
remainder2[n]+=10;
remainder2[n+1]-=1;
}/*end if*/
remainder[n]=remainder2[n]-remainder1[n];
}/*end for*/
for(;remainder==0
i--;
printf("-");
for(;i>=1;i--)
printf("%d",remainder);
}/*end if*/
}/*end if*/
if(j>i){
for(n=0;n<=20;n++){
if(remainder2[n]<remainder1[n]){
remainder2[n]+=10;
remainder2[n+1]-=1;
}/*end if*/
remainder[n]=remainder2[n]-remainder1[n];
}/*end for*/
for(;j>=1;j--)
printf("%d",remainder[j]);
}/*end if*/
return 0;
}
whose digits are beyond the limit of a long int on my system
but the program can only execute within 10 digits.What's more only
under the condition "i>j"and "i==j"does the program work
successfully..Why?Can you help me?
Thanks a lot */
#include<stdio.h>
#include<stdlib.h>
int remainder[21],remainder1[21],remainder2[21];
int main()
{
long integer1,integer2;
int i,j,n;
scanf("%ld%ld",&integer1,&integer2);
for(n=1;n<=20;n++){
remainder1[n] = integer1 % 10;
integer1 = (integer1 - remainder1[n]) / 10;
remainder2[n] = integer2 % 10;
integer2 = (integer2 - remainder2[n]) / 10;
}
for(i=20;remainder1 == 0
i--;
for(j=20;remainder1[j] == 0
j--;
if(i>j){
for(n=0;n<=20;n++){
if(remainder1[n]<remainder2[n]){
remainder1[n]+=10;
remainder1[n+1]-=1;
}/*end if*/
remainder[n]=remainder1[n]-remainder2[n];
}/*end for*/
for(;i>=1;i--)
printf("%d",remainder);
}/*end if*/
if(i==j){
for(;remainder1==remainder2
i--;
if(remainder1>remainder2){
for(n=0;n<=20;n++){
if(remainder1[n]<remainder2[n]){
remainder1[n]+=10;
remainder1[n+1]-=1;
}/*end if*/
remainder[n]=remainder1[n]-remainder2[n];
}/*end for*/
for(;remainder==0
i--;
for(;i>=1;i--)
printf("%d",remainder);
}/*end if*/
if(remainder2>remainder1){
for(n=0;n<=20;n++){
if(remainder2[n]<remainder1[n]){
remainder2[n]+=10;
remainder2[n+1]-=1;
}/*end if*/
remainder[n]=remainder2[n]-remainder1[n];
}/*end for*/
for(;remainder==0
i--;
printf("-");
for(;i>=1;i--)
printf("%d",remainder);
}/*end if*/
}/*end if*/
if(j>i){
for(n=0;n<=20;n++){
if(remainder2[n]<remainder1[n]){
remainder2[n]+=10;
remainder2[n+1]-=1;
}/*end if*/
remainder[n]=remainder2[n]-remainder1[n];
}/*end for*/
for(;j>=1;j--)
printf("%d",remainder[j]);
}/*end if*/
return 0;
}