Для одномерного массива вычислить произведение первого, третьего и шестого положительных элементов и определить их номера в массиве.
const n=20; var arr: array[1..n] of integer; i, j, i1,i3,i6: byte; mult: integer; begin randomize; for i:=1 to n do begin arr[i] := random(50) - 25; // диапазон [-25;24] write(arr[i]:4); end; writeln; i1 := 0; // индексы соответствующих полож. элементов i3 := 0; i6 := 0; j := 0; // индекс очередного положительного элемента for i:=1 to n do begin if arr[i] > 0 then begin j := j + 1; if j = 1 then i1 := i else if j = 3 then i3 := i else if j = 6 then begin i6 := i; break end; end; end; if (i10) and (i30) and (i60) then begin mult := arr[i1] * arr[i3] * arr[i6]; writeln('ID elements: ',i1,' ',i3,' ',i6); writeln('Mult: ', mult); end; end.
Пример выполнения программы:
-4 16 22 18 -11 -8 -15 5 -22 -18 -16 21 -12 -10 1 23 -17 -6 22 12 ID elements: 2 4 15 Mult: 288
Если не требуется определять индексы элементов массива, то код цикла поиска соответствующих элементов может выглядеть так (произведение вычисляется сразу, переменные i1, i3, i6 не нужны):
...
j := 0; // индекс очередного положительного элемента
mult := 1;
for i:=1 to n do begin
if arr[i] > 0 then begin
j := j + 1;
if (j=1) or (j=3) or (j=6) then
mult := mult * arr[i];
end;
end;
writeln('Mult: ', mult);
end.
Комментарии
Вот мой пример решения.
Вот мой пример решения. Работает. Только программа показывает еще значения элементов массива.
Ошибка
Задача выполнена не правильно, ты не заметил, что значений переменных i1, i3, и i6 нет в твоём массиве.
В выводе значений переменных должно быть написано: writeln(arr[i1],' ',arr[i3],' ',arr[i6]);
По условию задачи требуется
По условию задачи требуется определить номера элементов в массиве, а не их значения, так что в задаче все правильно.