Помогите с решением задачи. Язык программирования Pascal. Своими цифрами в массивах К(m) и L(n) заданы два целых числа в р-ичной системе счисления (р меньше 10). Найти в таком же виде их сумму, не вычисляя самих чисел.

Помогите с решением задачи. Язык программирования Pascal. Своими цифрами в массивах К(m) и L(n) заданы два целых числа в р-ичной системе счисления (р<10). Найти в таком же виде их сумму, не вычисляя самих чисел.
Гость
Ответ(ы) на вопрос:
Гость
//Код, уродливый как кхм //Pascal ABC.NET 3.1 сборка 1219 Const  n=1;  m=2; Var  ar1:array[1..m] of integer;  ar2:array[1..n] of integer;  arr:array[1..n+m] of integer;  i,p,raz,ost,isec:integer; begin write('Введите основание СС:'); readln(p); writeln('Введите число 1:'); for i:=1 to m do readln(ar1[i]); writeln('Введите число 2:'); for i:=1 to n do readln(ar2[i]); if n>m then begin i:=n; isec:=m; while (i<>0) and (isec<>0) do  begin   if ar2[i]+ar1[isec]>=p then    begin     ost:=(ar2[i]+ar1[isec]) div p;     arr[i]:=(ar2[i]+ar1[isec]) mod p;    end    else    begin     arr[i]:=ar2[i]+ar1[isec]+ost;     ost:=0;    end;   dec(i);   dec(isec);   inc(raz);  end;  arr[i]:=ost;  ost:=i;  for i:=1 to ost do  begin  arr[i]:=arr[i]+ar2[i];  inc(raz);  end;  while arr[1]>=p do   begin   ost:=arr[1] div p;   arr[1]:=arr[1] mod p;   for i:=raz downto 1 do   arr[i+1]:=arr[i];   arr[1]:=ost;   inc(raz);   end; end else begin i:=m; isec:=n; while (i<>0) and (isec<>0) do  begin   if ar1[i]+ar2[isec]>=p then    begin     ost:=(ar1[i]+ar2[isec]) div p;     arr[i]:=(ar1[i]+ar2[isec]) mod p;    end    else    begin     arr[i]:=ar1[i]+ar2[isec]+ost;     ost:=0;    end;   dec(i);   dec(isec);   inc(raz);  end; if n<>m then begin arr[i]:=ost; ost:=i; for i:=1 to ost do begin arr[i]:=arr[i]+ar1[i]; inc(raz); end; end else begin for i:=raz downto 1 do arr[i+1]:=arr[i]; arr[1]:=ost; inc(raz); end;  while arr[1]>=p do   begin   ost:=arr[1] div p;   arr[1]:=arr[1] mod p;   for i:=raz downto 1 do   arr[i+1]:=arr[i];   arr[1]:=ost;   inc(raz);   end; end; writeln('Result:'); for i:=1 to raz do write(arr[i]:4); end. Пример работы программы: Введите основание СС:3 Введите число 1: 2 2 Введите число 2: 1 Result:    1   0   0
Не нашли ответ?
Ответить на вопрос
Похожие вопросы