Cod sursa(job #275953)

Utilizator alisssiaMititelu Andra alisssia Data 10 martie 2009 19:18:20
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
using namespace std;
#include<cstdio>
# define N 11
int a[N],b[N],i=1,c,j=1,k,max1,s[N],sc,sa,sb;
char x;
int main()
{
	freopen("adunare.in","r",stdin);
	scanf("%c",&x); 
	if(x=='-') sa=-1;
	else {sa=1; a[i++]=int(x)-int('0');}
	while(scanf("%c",&x) != EOF && x!='\n')
		a[i++]=int(x)-int('0');
	scanf("%c",&x) ;
	if(x=='-') sb=-1;
	else {sb=1; b[j++]=int(x)-int('0');}
	while(scanf("%c",&x) !=EOF)
		b[j++]=int(x)-int('0');
	if(i>j) {max1=i;sc=sa;}
	else {max1=j;sc=sb;}
	if(sa<sb) {sa=1;sb=-1;}
	k=max1;
			while(i && j)
			{
				c=c+(sa*a[i])+(sb*b[j]);i--;j--;
				if(c<0) {s[max1--]=10+c; c=-1;}
				else if(c<10) {s[max1--]=c;c=0;}
				else {s[max1--]=10-c; c=1;}
			}
		while(i) {s[max1--]=c+a[i];c=0; i--;}
		while(j){s[max1--]=c+b[j];c=0;j--;}
		
	
	
	freopen("adunare.out","w",stdout);
	
		if (sc==-1)printf("-");
	for(i=max1+1;i<k;i++)
		printf("%d",s[i]);
	printf("\n");
	return 0;
}