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.