Pagini recente » Cod sursa (job #2573486) | Cod sursa (job #925304) | Cod sursa (job #3288651) | Cod sursa (job #877361) | Cod sursa (job #544783)
Cod sursa(job #544783)
#include <stdio.h>
#include <string.h>
FILE *f=fopen("adunare.in","r");
FILE *g=fopen("adunare.out","w");
char a[101],b[101];
void ogl(char *c){
register int i=1,j=c[0];
char aux;
while(i<=j){
aux=c[i];
c[i]=c[j];
c[j]=aux;
i++;
j--;
}
}
void prelucrare(char *c){
register int i,j;
if(c[c[0]]=='-' || c[c[0]]=='+'){
c[c[0]]=0;
c[0]--;
}
for(i=1;i<=c[0];i++)
c[i]-='0';
}
char comp(char *c,char *d){
register char ch='a';
if(c[0]>d[0])
return 'a';
if(d[0]>c[0])
return 'b';
for(register int i=c[0];i>=1;i++){
if(c[i]<d[i]){
return 'b';
}
if(c[i]>d[i])
return 'a';
}
return 'a';
}
void adunare(char *c,char *d){
register int i,t=0;
register int max=(c[0]>d[0]?c[0]:d[0]);
for(i=1;i<=max;i++){
c[i]+=d[i]+t;
t=c[i]/10;
c[i]%=10;
}
c[0]=max;
if(t!=0){
c[0]++;
c[c[0]]=t;
}
}
void scadere(char *c,char *d){
register int i,t=0;
for(i=1;i<=c[0];i++){
c[i]-=d[i]+t;
if(c[i]<0){
c[i]+=10;
t=1;
}
else
t=0;
}
while(c[c[0]]==0){
c[0]--;
}
}
void afisare(char *c){
register int i;
for(i=c[0];i>=1;i--)
fprintf(g,"%d",c[i]);
}
int main(void){
register int i;
fscanf(f,"%s",a+1);
a[0]=strlen(a+1);
ogl(a);
fscanf(f,"%s",b+1);
b[0]=strlen(b+1);
ogl(b);
register char sgna ,sgnb;
sgna=(a[a[0]]=='-'?'-':'+');
sgnb=(b[b[0]]=='-'?'-':'+');
prelucrare(a);
prelucrare(b);
if(sgna==sgnb){
adunare(a,b);
if(sgnb=='-')
fprintf(g,"-");
afisare(a);
}
else{
if(comp(a,b)=='a'){
scadere(a,b);
if(sgna=='-')
fprintf(g,"-");
afisare(a);
}
else{
scadere(b,a);
if(sgnb=='-')
fprintf(g,"-");
afisare(b);
}
}
fclose(f);
fclose(g);
return 0;
}