View Code of Problem 132

#include<stdio.h>
#include<string.h>
int main(){
	char a[400],b[400],c[401];
	int k1=0,k2=0,i,j;
	while(scanf("%s %s",a,b)!=EOF){
		memset(c,'\0',sizeof(c));
		int flag=0,l=0;
		int len1=strlen(a);
		int len2=strlen(b);
		for(i=0;i<len1;i++){
		if(a[i]=='.'){
		k1=i;
		break;
	}
	}
		for(i=0;i<len2;i++)
		{
			if(b[i]=='.'){
			k2=i;
			break;
		}
		 }
		 if(k1!=0&&k2!=0){
		 	
		 int t1=len1-k1-1;
		 int t2=len2-k2-1;
		 if(t1>t2){
		
		 	while(t1>t2){
		 		
		 		c[l++]=a[len1-1];
		 		t1--;
		 		len1--;
			 }
		 }
		 else if(t1<t2){
		 	while(t1<t2){
		 		c[l++]=a[len2-1];
		 		t2--;
		 		len2--;
			 }
		 }
		 for(i=len1-1;i>=0;i--){
		 	if(a[i]!='.'){
		 	int k=(a[i]-'0')+(b[i]-'0');
		 	if(flag==1){
		 	k++;
		    flag=0;
		 }
		 	if(k>9){
		 		flag=1;
		 		c[l++]=k-10+'0';
			 }
			 else
			 c[l++]=k+'0';
		 }
		 else{
		 	c[l++]='.';
		 }
	}
	if(flag==1){
		c[l++]='1';
	}
	}
	else if(k1==0){
		for(i=len2-1;i>=0;i--){
			c[l++]=b[i];
			if(b[i]=='.')
			break;
		}
		for(i=len1-1;i>=0;i--){
			
		 	int k=(a[i]-'0')+(b[i]-'0');
		 	if(flag==1){
		 	k++;
		    flag=0;
		 }
		 	if(k>9){
		 		flag=1;
		 		c[l++]=k-10+'0';
			 }
			 else
			 c[l++]=k+'0';
		 }
		if(flag==1){
		c[l++]='1';
	}
	}
	else if(k2==0){
		for(i=len1-1;i>=0;i--){
			c[l++]=a[i];
			if(a[i]=='.')
			break;
		}
		for(i=len2-1;i>=0;i--){
			
		 	int k=(a[i]-'0')+(b[i]-'0');
		 	if(flag==1){
		 	k++;
		    flag=0;
		 }
		 	if(k>9){
		 		flag=1;
		 		c[l++]=k-10+'0';
			 }
			 else
			 c[l++]=k+'0';
		 }
		if(flag==1){
		c[l++]='1';
	}
	}
	for(i=l-1;i>=0;i--){
		if(c[i]=='0'){
			for(j=i;j>=0;j--){
				if(c[j]!='0')
				break;
			}
			if(j>=0){
			printf("%c",c[i]);
		    break;
		}
		}
		else{
			printf("%c",c[i]);
		}
	}
	printf("\n");
	}
}

Double click to view unformatted code.


Back to problem 132