
СРОЧНО Объясните задание (нам дали олимпиаду, но мы этого не проходили) 1. Какой получится вывод
после выполнения данной программы, при этом каждый элемент равен своему индексу? var A:array [1..10] of integer; i:byte; S:integer; begin for i:=1 to 10 do read (A[i]); S:=0; for i:=1 to 10 do if i mod 3 = 0 tnen S:=S+A[i]; write (`S=`, S) end. Нашла ответ, что S=18, но откуда это взято?

Ответы на вопрос

Ну смотри. У тебя цикл выполняется 10 раз. На каждой итерации проверяется, не равен ли остаток от деления счётчика на 3. Если равен, то на значение элемента массива с текущим номером увеличивается переменная S. Счётчик отсчитывается от 1 до 10. Соответственно, подходят значения 3, 6 и 9. Поскольку в массиве, как ты пишешь, номера индексов, то берём их: 3 + 6 + 9 = 18.



Давайте разберемся, как работает данная программа и как получается ответ S=18.
Перед тем, как объяснить, как программа работает, давайте посмотрим на нее с некоторыми исправлениями в синтаксисе:
pascalvar A: array [1..10] of integer; i: byte; S: integer; begin for i := 1 to 10 do read(A[i]); S := 0; for i := 1 to 10 do if i mod 3 = 0 then S := S + A[i]; write('S=', S); end.
Теперь разберем программу шаг за шагом:
Объявляется массив
A
с 10 элементами и переменныеi
(цикл) иS
(для суммы).В цикле
for
пользователь вводит значения для каждого элемента массиваA
.Затем устанавливается переменная
S
равной 0. Эта переменная будет использоваться для хранения суммы элементов массиваA
, чьи индексы делятся на 3 без остатка.Затем следует еще один цикл
for
для обхода элементов массиваA
.Внутри цикла проверяется условие
if i mod 3 = 0 then
. Это условие ищет элементы массива, чей индекс делится на 3 без остатка.Если условие выполняется (т.е. индекс делится на 3), то значение этого элемента прибавляется к переменной
S
.В конце программы выводится значение переменной
S
.
Теперь давайте рассмотрим, какие элементы массива A
будут учтены при подсчете S
.
Массив A
состоит из 10 элементов, и каждый элемент равен своему индексу. Таким образом:
A[1] = 1 A[2] = 2 A[3] = 3 A[4] = 4 A[5] = 5 A[6] = 6 A[7] = 7 A[8] = 8 A[9] = 9 A[10] = 10
Теперь посмотрим на индексы элементов и определим, какие из них делятся на 3 без остатка:
1 mod 3 = 1 (не делится) 2 mod 3 = 2 (не делится) 3 mod 3 = 0 (делится) 4 mod 3 = 1 (не делится) 5 mod 3 = 2 (не делится) 6 mod 3 = 0 (делится) 7 mod 3 = 1 (не делится) 8 mod 3 = 2 (не делится) 9 mod 3 = 0 (делится) 10 mod 3 = 1 (не делится)
Таким образом, суммируются элементы массива, чьи индексы делятся на 3 без остатка:
S = A[3] + A[6] + A[9] = 3 + 6 + 9 = 18
Поэтому правильный ответ S=18.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili