Сумма одинаковых элементов массива - Pascal

Узнай цену своей работы

Формулировка задачи:

Используя процедуры, найдите сумму элементов, присутствующих в двух данных массивах. Всю программа должна быть разбита на процедуры.С процедурой ввода элементов массива справилась, но с суммой косяк. Если ввожу первый массив [12 1 1 1 1] и второй массив [1 1 1 1 3] выдает сумму 16, а нужно 4. Подскажите как исправить, пожалуйста.

Решение задачи: «Сумма одинаковых элементов массива»

textual
Листинг программы
function SumEq(const a: mas; b: mas): Longint;
var i, j: Integer; s: Longint;
begin
  s:=0;
  for i:=1 to n do
    for j:=1 to n do
      if a[i]=b[j] then begin
        s:=s+a[i]; b[j]:=0; Break;
      end;
  SumEq:=s;
end;
...
  WriteLn(SumEq(a,b));

Объяснение кода листинга программы

В данном коде реализована функция SumEq, которая принимает два массива a и b и возвращает сумму всех одинаковых элементов, которые есть в этих массивах. Внутри функции объявлены две переменные i и j типа Integer, которые используются для перебора элементов массивов a и b соответственно. Также объявлена переменная s типа Longint, которая используется для хранения суммы одинаковых элементов. Далее, в цикле происходит перебор всех элементов массива a. Для каждого элемента a[i] происходит проверка на наличие такого же элемента в массиве b. Если такой элемент найден (то есть a[i] равно b[j]), то к переменной s добавляется значение a[i], а сам элемент b[j] заменяется на ноль (чтобы не тратить время на повторное вычисление суммы уже учтенных элементов). После этого цикл прерывается с помощью оператора Break. По завершении функции, ее результат (сумма одинаковых элементов) присваивается переменной SumEq и возвращается из функции. В основной части программы, после вызова функции SumEq, результат ее работы выводится на экран с помощью функции WriteLn.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы