Вычисление суммы необычного ряда (2) - QBasic
Формулировка задачи:
Дана последовательность чисел sin1, sin2, ... , sin1000
Между этими числами поставлены знаки операций
умножения и сложения. Знаки ставятся перед числом
(То есть число sin1 не участвует в определении операции)
Как определяется операция?
если в числе sin(i) первая цифра после десятичной запятой
Нечетная, то перед этим числом ставится знак умножения,
в противном случае - сложение
Надо суммировать полученный ряд.
....
Эта программа выдала ответ: 29.91009
С учетом погрешности вычислений последние три цифры можно отбросить
Вопросы
1. Можно ли применить здесь рекурсию?
2. Какой уровень сложности этой задачи?
3. Как решить задачу иначе?
Листинг программы
- REM
- REM OTBET: 29.91
- REM
- CLS
- n = 1000
- DIM M(1 TO n)
- FOR i = 1 TO n
- M(i) = SIN(i)
- NEXT
- FOR i = 2 TO n
- k = FIX(10 * ABS(M(i)))
- IF k MOD 2 THEN
- M(i) = M(i) * M(i - 1)
- M(i - 1) = 0
- END IF
- NEXT
- FOR i = 1 TO n
- SUM = SUM + M(i)
- NEXT
- PRINT SUM
- END
Решение задачи: «Вычисление суммы необычного ряда (2)»
textual
Листинг программы
- DIM i AS LONG, a AS DOUBLE, b AS DOUBLE, s AS DOUBLE
- b = SIN(1)
- FOR i = 2 TO 1000
- a = SIN(i)
- IF INT(ABS(a) * 10) MOD 2 THEN b = b * a ELSE s = s + b: b = a
- NEXT i
- s = s + b
- PRINT s
Объяснение кода листинга программы
- Объявляются четыре переменные: i, a, b, s типа LONG и DOUBLE соответственно.
- Значение переменной b присваивается функции SIN(1).
- Запускается цикл от 2 до 1000, в котором: 3.1. Значение переменной a присваивается функции SIN(i). 3.2. С помощью условного оператора проверяется, является ли i четным числом (с помощью функции INT(ABS(a) * 10) MOD 2). 3.3. Если условие в пункте 3.2 выполняется, то значение переменной b умножается на значение переменной a. 3.4. Если условие в пункте 3.2 не выполняется, то значение переменной b присваивается переменной s, а значение переменной b присваивается значению переменной a.
- После завершения цикла значение переменной s присваивается сумме значений переменной s и переменной b.
- Выводится значение переменной s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д