Написать программу для сложения натуральных чисел А и В в троичной системе счисления

Написать программу для сложения натуральных чисел А и В в троичной системе счисления
Гость
Ответ(ы) на вопрос:
Гость
function Is3Base(s:string):Boolean; {   Возвращает True, если строка представляет натуральное число   в троичной системе счисления } const   Dig3Base=['0'..'2']; var   i,n:integer;   err:boolean; begin   n:=Length(s);   if n=0 then Is3Base:=False   else begin     i:=n;     repeat       err:=not(s[i] in Dig3Base);       Dec(i);     until (i=0) or err;     Is3Base:=not err   end end; procedure DigitsAlign(var s1,s2:string); {   Дополняет слева нулями короткое слагаемое до длинного } var   i,n,l1,l2:integer; begin   l1:=Length(s1); l2:=Length(s2);   if l1>l2 then     for i:=l2+1 to l1 do s2:='0'+s2   else     for i:=l1+1 to l2 do s1:='0'+s1 end; function Add3Base(s1,s2:string):string; {   Сложение на строках натуральных чмсел s1 и s2   в системе счисления по основанию 3 } var   s:string;   c0,i,ip,d:integer; begin   c0:=Ord('0');   If not Is3Base(s1) then Add3Base:=s1+' не троичное'   else     if not Is3Base(s2) then Add3Base:=s2+' не троичное'     else begin       DigitsAlign(s1,s2);       ip:=0; s:='';       for i:=Length(s1) downto 1 do begin         d:=Ord(s1[i])+Ord(s2[i])-2*c0+ip;         if d>2 then begin ip:=1; d:=d-3 end         else ip:=0;         s:=Chr(d+c0)+s       end;       if ip=1 then s:='1'+s;       Add3Base:=s       end end;   var   s1,s2,sr:string; begin   Write('Введите первое слагаемое в троичной системе: ');   Readln(s1);   Write('Введите второе слагаемое в троичной системе: ');   Readln(s2);   Writeln(s1,'(3) + ',s2,'(3) = ',Add3Base(s1,s2),'(3)') end. Тестовое решение: Введите первое слагаемое в троичной системе: 12101120122001 Введите второе слагаемое в троичной системе: 10020021122 12101120122001(3) + 10020021122(3) = 12111210220200(3)
Не нашли ответ?
Ответить на вопрос
Похожие вопросы