program vi4itanie; Uses Crt; type cipari=array[1..24] of string; {cipari-cifri} var s1,s2,r,sk1,sk2: string; a1,a2: char; i,l1,l2,l,t,sk,g: integer; c:cipari; {cipari-cifri} a,b:longint; procedure burti(var sk:string); {burti-bukvi} var i,l:integer; a:longint; begin l:=length(sk); for i:=1 to l do begin a:=ord(sk[i]); if (a>=97) and (a<=122) then begin a:=a-24; sk[i]:=(Chr(a)); end; end; end; function parveide(w:char):integer; {malejnkie bukvi peredelivajutsa v bolj6ie} begin case w of '0'..'9': parveide:=ord(w)-48; else parveide:=ord(upcase(w))-55; end; end; begin ClrScr; repeat writeln('Ievadiet mazinaamo:'); {vvedite umenj6aemoe} readln(sk1); burti(sk1); {burti - bukvi} l1:=length(sk1); for i:=1 to l1 do a:=ord(sk1[i]); if not ((a in [48..57]) or (a in [65..70])) then writeln('Skaitlis ir ievadits nepareizi!'); {4islo napisano nepraveljno} until ((a in [48..57]) or (a in [65..70])); repeat writeln('Ievadiet mazinaataaju:');{vvedite vi4itaemoe} readln(sk2); burti(sk2); {burti- bukvi} l2:=length(sk2); for i:=1 to l2 do b:=ord(sk2[i]); if not ((b in [48..57]) or (b in [65..70])) then writeln('Skaitlis ir ievadits nepareizi!'); {4islo vvedeno nepraveljno} until ((b in [48..57]) or (b in [65..70])); for i:=1 to l1 do s1[l1-i+1]:=sk1[i]; for i:=1 to l2 do s2[l2-i+1]:=sk2[i]; if l1>l2 then l:=l1 else l:=l2; t:=0; r:=''; for i:=1 to l do begin a1:='0'; a2:='0'; if i<=l1 then a1:=s1[i]; if i<=l2 then a2:=s2[i]; sk:=parveide(a1)-parveide(a2)-t; {peredelka} t:=sk div 16; g:=sk mod 16; if g<10 then r:=r+chr(g+48) else r:=r+chr(g+55); if (t>0) and (i=l) then r:=r+'1'; end; writeln; writeln(sk1); writeln('-'); writeln(sk2); writeln('Starpiiba ir: ');{raznostj} for i:=length(r) downto 1 do write(r[i]); readkey end.