Cod sursa(job #7826)

Utilizator phantomFlorea Alexandru phantom Data 22 ianuarie 2007 18:56:48
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream.h>
#include<string.h>

int a[20], b[20], suma[21];
char x[20], y[20];
int LgA, LgB, Max;

void citire ()

{
	ifstream f("adunare.in");
	f.getline (x, 20);
	f.getline (y, 20);
	LgA=strlen(x);
	LgB=strlen(y);
	for(int i=1;i<=LgA;i++)
		a[i]=x[i-1]-48;
	for(i=1;i<=LgB;i++)
		b[i]=y[i-1]-48;
	f.close ();
}

void adunare ()
{
	if(LgA>LgB)
	{
		Max=LgA;
		for(int i=LgB;i>=1;i--)
		{
			suma[i]+=a[i]+b[i];
			if(suma[i]>=10)
			{
				suma[i]-=10;
				suma[i-1]++;
			}
		}
		for(i=LgA-LgB;i>LgB;i--)
		{
			suma[i]+=a[i];
		}
	}
	else
	{
		Max=LgB;
		for(int i=LgA;i>=1;i--)
		{
			suma[i]+=a[i]+b[i];
			if(suma[i]>=10)
			{
				suma[i]-=10;
				suma[i-1]++;
			}
		}
		for(i=LgB-LgA;i>LgA;i--)
		{
			suma[i]+=a[i];
		}
	}
}

void afisare()
{
	ofstream g("adunare.out");
	if(suma[0])
		g<<suma[0];
	for(int i=1;i<=Max;i++)
		g<<suma[i];
	g.close ();
}

int main ()
{
	citire ();
	adunare ();
	afisare ();
   return 0;
}