Найти сумму элементов самой длинной последовательности подряд идущих элементов массива - QBasic
Формулировка задачи:
Задан массив натуральных чисел, элементы которого могут принимать значения от 1 до 1000. Найти и вывести на экран сумму элементов самой длинной последовательности подряд идущих элементов массива, которые без остатка делятся на 3. Если такой последовательности не существует, вывести соответствующее сообщение.
Решение задачи: «Найти сумму элементов самой длинной последовательности подряд идущих элементов массива»
textual
Листинг программы
- DEFLNG A, I-K, N, S
- OPTION BASE 1
- RANDOMIZE TIMER
- CLS
- INPUT "Vvedite N"; n
- DIM a(n)
- FOR i = 1 TO n
- a(i) = 1000 * RND + .5
- PRINT a(i);
- NEXT i
- FOR i = 1 TO n
- IF a(i) MOD 3 = 0 THEN 100
- NEXT i
- PRINT "TAKOI POSLEDOVATELNOSNI NET"
- GOTO 200
- 100
- ki = 1
- k = 1
- j = 0
- FOR i = 1 TO n
- IF a(i) MOD 3 = 0 THEN
- j = j + 1
- ELSEIF k < j THEN
- k = j
- ki = i - 1
- j = 0
- ELSE
- j = 0
- END IF
- NEXT i
- s = 0
- FOR i = ki - k + 1 TO ki
- s = s + a(i)
- NEXT i
- PRINT "SUMMA = "; s
- 200
- END
Объяснение кода листинга программы
Код решает задачу поиска суммы элементов самой длинной последовательности подряд идущих элементов массива. Список действий:
- Ввод числа N.
- Создание массива a(n) и заполнение его случайными числами от 1000 до 1999.
- Поиск самой длинной последовательности (в цикле for). Если текущий элемент a(i) делится на 3 без остатка, то это элемент последовательности, увеличиваем счетчик j. Если элемент не делится на 3 без остатка, но предыдущий элемент также не делился на 3 без остатка, то это новая последовательность, сохраняем счетчик k и переходим к следующему циклу. Если элемент не делится на 3 без остатка и предыдущий элемент делился на 3 без остатка, то это новая последовательность, сохраняем счетчик k и начинаем новый цикл. Если элемент не делится на 3 без остатка и предыдущий элемент также не делился на 3 без остатка, то это новая последовательность, сохраняем счетчик k и переходим к следующему циклу.
- Вывод сообщения
TAKOI POSLEDOVATELNOSNI NET
и возврат в начало программы. - Начало нового цикла с параметрами ki, k, j. Сумма элементов последовательности равна сумме элементов от ki до ki+j-1.
- Вывод сообщения
SUMMA =
и суммы s. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д