Сумма элементов двух массивов (сложновато)
Первую часть с вводом элементов я сделал, а вот с подсчётом трудновато:
uses crt;
type
f=array[1..5] of integer;
var
a:f;
b:f;
g:integer;
Procedure Enter(var c:f; var d:f);
var i,j,g:integer;
begin
For i:=1 to 5 Do
begin
writeln('Enter ',i,' element of array A: ');
readln(c);
end;
For j:=1 to 5 Do
begin
writeln('Enter ',i,' element of array B: ');
readln(d[j]);
end;
g:=0;
For i:=1 to 5 Do
for j:=1 to 5 Do
If c=d[j] then
begin
g:=g+c;
readln;
end
end;
BEGIN
clrscr;
Enter(a,b);
writeln('Summa=',g);
readln;
End.
Procedure Enter(var a:f);
var i:integer;
begin
For i:=1 to n Do
begin
writeln('Enter ',i,' element of array A: ');
read(c);
end
end;
не стоит ничего лишнего в нее пихать
var i,s:integer;
function IsIn(x:integer;var b:f):boolean;
var i:integer; f:boolean;
begin i:=1; f:=false;
while (i<=n)and not f do
begin f:=x=b; i:=i+1 end;
isin:=f
end;
begin
for i:=1 to n do
if isin(a,b) then s:=s+a;
sum:=s
end;
что-то в таком ключе - но это только один из вариантов с описанием вложенной функции
var
i,s:integer;
begin
s:=0;
for i:=1 to x do //Где X длина массива (количество цифр в массиве)
if a(i)=b(i) then s:=s+a(i);
writeln(' Ответ: Сумма:= ',s);
end;
Здесь же написано "которые одновременно встречаются в массиве "В""
одновременно - вдумайтесь в это слово
это не значит a=b ))
Нужно составить программу вычисления суммы тех элементов одномерного массива "А", которые одновременно встречаются в массиве "В".
нигде вроде не пишется об удалении дубликатов. просто написать функцию indexOf, которая принимает как параметры массив и переменную типа integer. проходим с помощью цикла массив А и каждый его элемент Х отправляем в эту функцию вместа с массивом B, если мы пробегая по массиву B(в функции) встречаем элемент равный Х, тогда возвращаем его индекс, иначе - возвращаем -1. если вернулся индекс > 0 - прибавляем к сумме текущий элемент...
uses crt;
type
f=array[1..5] of integer;
var
a:f;
b:f;
g:integer;
Procedure Enter(var c:f; var d:f);
var i,j{,g}:integer;
begin
For i:=1 to 5 Do
begin
writeln('Enter ',i,' element of array A: ');
readln(c);
end;
For j:=1 to 5 Do
begin
writeln('Enter ',i,' element of array B: ');
readln(d[j]);
end;
g:=0;
{
For i:=1 to 5 Do
for j:=1 to 5 Do
If c=d[j] then
begin
g:=g+c;
readln;
end;}
end;
{obrabotka massiva}
procedure Obrabotka(var c:f; var d:f);
var i,j,sum:integer;
begin
sum:=0;
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
if c=d[j] then sum:=sum+d[j];
end;
end;
writeln('Summa=',sum)
end;
BEGIN
clrscr;
Enter(a,b);
obrabotka(a,b);
{writeln('Summa=',g);}
repeat until keypressed;
End.
сразу оговорюсь что если в массиве B будет несколько одинаковых чисел, то сумма кривовато будет считаться, поэтому надо либо отобрать из массива B только уникальные значения чисел, либо как советовала OlgaKr сделать функцию, тем более что тебе и надо [QUOTE=[FENIX]С использованием процедур, или функций[/QUOTE].
Тут не нужно отбрасывать одинаковые элементы, даже если они встречаются в одном и том же массиве.
Просто если какой-то элемент массива "А"= какому-то элементу массива "В", то его нужно сложить с такими же элементами в этом же массиве "А", которые имеют свои "копии" в массиве "В", а если они "копий" не имеют, то их просто пропускаем.
как условие написали так она и выдает
на массивы
а : 1 2 3 4 5
b: 8 8 4 1 9
сумму выдаст 5
как условие написали так она и выдает
на массивы
а : 1 2 3 4 5
b: 8 8 4 1 9
сумму выдаст 5
Как так, откуда сумма 5? В начале же ясно написано:
"Нужно составить программу вычисления [SIZE="2"]суммы тех элементов одномерного массива "А", которые одновременно встречаются в массиве "В"[/SIZE]"
т.е. дано
a:2,3,4,5,6
b:5,3,2,1,6
Смотрим 2<>5 идём дальше 3=3, then увличиваем sum на 3 (sum=sum+a), -> 4<>2 -> 5<>1 -> 6=6 значит увеличиваем сумму sum на 6. Тоесть изначально sum 0 потом +3 (т.к совпали), а потом на 6.
Так где же у тебя совпадают, там сумма будет=0.
Здесь простой алгоритм. В одном цикле смотрим, совпадают ли цифры массива или нет, если да то суммируем.
for i:=1 to n do //Где n размерность одномерного массива.
if a=b then summ=summ+a // Если совпали, значит суммируем
Всё, а остальное дело ввода и вывода
"Нужно составить программу вычисления суммы тех элементов одномерного массива "А", которые одновременно встречаются в массиве "В""
логично трактовать если i элемент а есть в массиве b значит суммируем