Задать шаг цикла 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;
т.е. мы просто во втором цикле проходим по тройкам значений и берем первое значение из тройки