Вопрос задан 12.08.2018 в 07:34. Предмет Информатика. Спрашивает Тхорук Алиса.

Помогите с решением задачи. Язык программирования Pascal. Своими цифрами в массивах К(m) и L(n)

заданы два целых числа в р-ичной системе счисления (р<10). Найти в таком же виде их сумму, не вычисляя самих чисел.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Ярославцева Настя.
//Код, уродливый как кхм
//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
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вот решение задачи на языке программирования Pascal:

```pascal program SumInBaseR; var K, L: array of Integer; R, i, carry: Integer; begin // Ввод данных Write('Введите основание системы счисления R: '); Readln(R); Write('Введите количество цифр в числе K: '); Readln(n); SetLength(K, n); Write('Введите цифры числа K через пробел: '); for i := 0 to n-1 do Read(K[i]); Readln; Write('Введите количество цифр в числе L: '); Readln(m); SetLength(L, m); Write('Введите цифры числа L через пробел: '); for i := 0 to m-1 do Read(L[i]); Readln; // Вычисление суммы carry := 0; if n > m then SetLength(L, n) else SetLength(K, m); for i := 0 to Max(n, m)-1 do begin K[i] := K[i] + L[i] + carry; carry := K[i] div R; K[i] := K[i] mod R; end; // Вывод результата Write('Сумма чисел K и L в системе счисления R: '); if carry > 0 then Write(carry, ' '); for i := Max(n, m)-1 downto 0 do Write(K[i], ' '); Writeln; end. ```

Объяснение решения: 1. Сначала мы запрашиваем основание системы счисления R, количество цифр в числе K и L, а затем сами цифры чисел K и L. 2. Затем мы вычисляем сумму чисел K и L в системе счисления R. Для этого мы используем переменную carry, чтобы отслеживать переносы при сложении цифр. 3. Мы также увеличиваем размер массива K или L, чтобы обеспечить достаточное место для хранения суммы. 4. Затем мы проходим по каждой позиции в массивах K и L, складываем соответствующие цифры и перенос, и сохраняем результат в массиве K. 5. Если после последней позиции остался перенос, мы выводим его. 6. Затем мы выводим сумму чисел K и L в системе счисления R.

Примечание: В этом решении предполагается, что вводные данные корректны и соответствуют условию задачи. Если вводные данные не соответствуют ожидаемому формату или условию задачи, код может работать некорректно.

Надеюсь, это решение поможет вам! Если у вас возникнут еще вопросы, пожалуйста, дайте мне знать.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос