program Langzahlarithmetik_Addition_1_2;

uses
  Crt,Dos,SysUtils;

var
  zahl_1,zahl_2,summe,abbruch : String;

function LangzahlAddition(summand_1,summand_2: String): String;

var
  ziffer_summe,ziffer_1,ziffer_2,null : String[1];
  summe_1,diff_laenge : String;
  i,j,k,l_s_1,l_s_2,ueber,ziff_summ,ziff_summ_1,ziff_1,ziff_2,diff_laen : Integer;

begin
  ueber := 0;
  summe := '';
  summe_1 := '';
  l_s_1 := Length(summand_1);
  l_s_2 := Length(summand_2);
  if l_s_1 < l_s_2 then begin
    diff_laen := l_s_2 - l_s_1;
    diff_laenge := '';
    null := IntToStr(0);
    for k := 1 to diff_laen do begin
      diff_laenge := diff_laenge + null;
    end;
    summand_1 := diff_laenge + summand_1;
    l_s_1 := Length(summand_1);
  end else
  begin
    diff_laen := l_s_1 - l_s_2;
    diff_laenge := '';
    null := IntToStr(0);
    for k := 1 to diff_laen do begin
      diff_laenge := diff_laenge + null;
    end;
    summand_2 := diff_laenge + summand_2;
    l_s_2 := Length(summand_2);
  end;
  Write(summand_1,' ');
  Write(summand_2);
   Readln;
  for i := 0 to l_s_1 - 1 do begin
    ziffer_1 := summand_1[l_s_1 - i];
    ziffer_2 := summand_2[l_s_2 - i];
    ziff_1 := StrToInt(ziffer_1);
    ziff_2 := StrToInt(ziffer_2);
    ziff_summ := ziff_1 + ziff_2;
    ziff_summ_1 := 0;
    if ziff_summ > 9 then begin
      ziff_summ_1 := ziff_summ - 10 + ueber;
      ziffer_summe := IntToStr(ziff_summ_1);
      summe_1 := summe_1 + ziffer_summe;
      ueber := 1;
      if i = l_s_1 - 1 then begin
        summe_1 := summe_1 + '1';
      end;
    end else
    if ziff_summ = 9 then begin
      if ueber = 1 then begin
        ziff_summ_1 := ziff_summ - 10 + ueber;
        ziffer_summe := IntToStr(ziff_summ_1);
        summe_1 := summe_1 + ziffer_summe;
        ueber := 1;
        if i = l_s_1 - 1 then begin
          summe_1 := summe_1 + '1';
        end;
      end else
      if ueber = 0 then begin
        ziffer_summe := IntToStr(ziff_summ);
        summe_1 := summe_1 + ziffer_summe;
        ueber := 0;
      end;
    end else
    if ziff_summ < 10 then begin
      ziff_summ_1 := ziff_summ + ueber;
      ziffer_summe := IntToStr(ziff_summ_1);
      summe_1 := summe_1 + ziffer_summe;
      ueber := 0;
    end;
  end;
  for j := 0 to Length(summe_1) - 1 do begin
    summe := summe + summe_1[Length(summe_1) - j];
  end;
  exit(summe);
end;


begin
  repeat
    Writeln;
    Write('Summand1:');
    Readln(zahl_1);
    WriteLn;
    Write('Summand2:');
    ReadLn(zahl_2);
    Writeln;
    LangzahlAddition(zahl_1,zahl_2);
    WriteLn;
    Write(summe);
    ReadLn;
    WriteLn;
    Write('Programm abbrechen?: ');
    Readln(abbruch);
    ClrScr;
  until abbruch = 'j';
end.

