Задать вопрос
15 октября, 15:52

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

+2
Ответы (1)
  1. 15 октября, 16:57
    0
    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)
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Написать программу для сложения натуральных чисел А и В в троичной системе счисления ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы