Задать шаг цикла for

Задача: Есть одномерный массив с указанием его длины вручную. Нужно суммировать каждый третий элемент массива!

Пример:

[20, 132, 43, 325, 26, 1326, 236, 2163, 98, 9] //Сумма: 43 + 1326 + 98 = 1467 (суммируется каждый третий)

Вот мой код, прошу усовершенствовать:

Var arr : array[0..1000000] of Integer;
    num,sum,i : Integer;
    
Begin
  Randomize;
  writeln('Укажите длину массива: ');

  readln(num);
  num := num-1;

  for i:=0 to num do Begin
    arr[i] := random(100)-50;
    sum := sum + arr[i];
    write(arr[i], ' ');
  End;
  writeln('Сумма: ', sum); 
End.

...или дать подсказку. Главное условие: без цикла if.


Ответы (1 шт):

Автор решения: Zhihar

в вашем случае

for i:=0 to num do Begin
    arr[i] := random(100)-50;
    write(arr[i], ' ');

    if i mod 3 = 2 then begin
        sum := sum + arr[i];
    end;
End;

хотя лучше все таки разбить на модули и сначала заполнить весь массив значениями, а затем уже что-то делать с массивом, а не все в одной куче

Если нужен каждый третий и не использоваться if, то должно выглядеть так:

// заполняем массив значениями и выводим на экран
for i := 0 to num do Begin
    arr[i] := random(100)-50;
    write(arr[i], ' ');
End;

// выводим каждый третий элемент
for i := 0 to num div 3 do Begin
    sum := sum + arr[3 * i];
End;

т.е. мы просто во втором цикле проходим по тройкам значений и берем первое значение из тройки

→ Ссылка