Cod sursa(job #172097)

Utilizator irene_mFMI Irina Iancu irene_m Data 5 aprilie 2008 19:01:17
Problema A+B Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.81 kb
program meniu;
var a,b,c,d:array[0..20]of byte;
    opt,k,p,aux,i,j:byte;
    n,m:longint;
    t:integer;
    f,g:text;
begin
 assign(f,'adunare.in'); assign(g,'adunare.out');
 reset(f); rewrite(g);
 readln(f,n);
 readln(f,m);
   while n>0 do
   begin
    k:=k+1; a[k]:=n mod 10; n:=n div 10;
   end;
   while m>0 do
   begin
    p:=p+1; b[p]:=m mod 10; m:=m div 10;
   end;
   for i:=1 to (k div 2) do
   begin
    aux:=a[i]; a[i]:=a[k-i+1]; a[k-i+1]:=aux;
   end;
   for i:=1 to (p div 2) do
   begin
    aux:=b[i]; b[i]:=b[p-i+1]; b[p-i+1]:=aux;
   end;
   t:=0;
   if k>p then
   begin
    for i:=1 to (k-p) do
     d[i]:=0;
    j:=0;
    for i:=(k-p+1) to k do
    begin
     j:=j+1; d[i]:=b[j];
    end;
    for i:=k downto 1 do
    begin
     a[i]:=a[i]+t;
     if (a[i]+d[i])>9 then
     begin
      c[i]:=(a[i]+d[i]) mod 10;
      t:=1;
     end
     else
     begin
      c[i]:=a[i]+d[i];
      t:=0;
     end;
    end;
    for i:=1 to k do
    write(g,c[i]);

  end
  else
  if p>k then
  begin
   for i:=1 to (p-k) do
     d[i]:=0;
    j:=0;
    for i:=(p-k+1) to p do
    begin
     j:=j+1; d[i]:=a[j];
    end;
    for i:=p downto 1 do
    begin
     b[i]:=b[i]+t;
     if (b[i]+d[i])>9 then
     begin
      c[i]:=(b[i]+d[i]) mod 10;
      t:=1;
     end
     else
     begin
      c[i]:=b[i]+d[i];
      t:=0;
     end;
    end;
    for i:=1 to p do
    write(g,c[i]);

  end
  else
  if k=p then
  begin
    for i:=k downto 1 do
    begin
     a[i]:=a[i]+t;
     if (a[i]+b[i])>9 then
     begin
      c[i]:=(a[i]+b[i]) mod 10;
      t:=1;
     end
     else
     begin
      c[i]:=b[i]+a[i];
      t:=0;
     end;
    end;
    if t=1 then
    c[0]:=t;
    for i:=0 to p do
    write(g,c[i]);

  end;

close(f); close(g);
end.