Pagini recente » Cod sursa (job #1219393) | Cod sursa (job #1603507) | Cod sursa (job #1349505) | Cod sursa (job #903659) | Cod sursa (job #1024374)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("adunare.in");
ofstream g("adunare.out");
char s[2001];
int L1,L2;
struct numar{
int x;
numar *next;
numar *prev;
};
numar *b,*a,*c,*q,*p,*u,*r,*aux;
void adunare(){
int t;
c=new numar;
c->prev=NULL;
(c->x)=((a->x)+(b->x))%10;
t=((a->x)+(b->x))/10;
p=a->next,q=b->next,u=c;
while(q!=NULL){
r=new numar;
(r->x)=((p->x)+(q->x)+t)%10;
t=((p->x)+(q->x)+t)/10;
u->next=r;
r->prev=u;
u=r;
aux=p,p=p->next,delete aux;
aux=q,q=q->next,delete aux;
}
delete q;
while(p!=NULL){
r=new numar;
(r->x)=(t+(p->x))%10;
t=(t+(p->x))/10;
u->next=r;
r->prev=u;
u=r;
aux=p,p=p->next,delete aux;
}
delete p;
r->next=NULL;
}
int main(void){
register int i,j;
f>>s;
a=new numar;
L1=strlen(s);
a->x=s[L1-1]-'0';
p=a;
for(i=L1-2;i>=0;i--){
q=new numar;
q->x=s[i]-'0';
p->next=q;
p=q;
}
q->next=NULL;
f>>s;
b=new numar;
L2=strlen(s);
b->x=s[L2-1]-'0';
p=b;
for(i=L2-2;i>=0;i--){
q=new numar;
q->x=s[i]-'0';
p->next=q;
p=q;
}
q->next=NULL;
if(L2>L1)
q=a,a=b,b=q;
adunare();
while(r!=NULL){
g<<r->x;
aux=r,r=r->prev,delete aux;
}
f.close();
g.close();
return 0;
}