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

Ответы 1

  • 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  endend;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'+s1end;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      endend; var  s1,s2,sr:string;begin  Write('Введите первое слагаемое в троичной системе: ');  Readln(s1);  Write('Введите второе слагаемое в троичной системе: ');  Readln(s2);  Writeln(s1,'(3) + ',s2,'(3) = ',Add3Base(s1,s2),'(3)')end.Тестовое решение:Введите первое слагаемое в троичной системе: 12101120122001Введите второе слагаемое в троичной системе: 1002002112212101120122001(3) + 10020021122(3) = 12111210220200(3)
    • Автор:

      virgilio
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years