Вычисление суммы необычного ряда (2) - QBasic
Формулировка задачи:
Дана последовательность чисел sin1, sin2, ... , sin1000
Между этими числами поставлены знаки операций
умножения и сложения. Знаки ставятся перед числом
(То есть число sin1 не участвует в определении операции)
Как определяется операция?
если в числе sin(i) первая цифра после десятичной запятой
Нечетная, то перед этим числом ставится знак умножения,
в противном случае - сложение
Надо суммировать полученный ряд.
....
Эта программа выдала ответ: 29.91009
С учетом погрешности вычислений последние три цифры можно отбросить
Вопросы
1. Можно ли применить здесь рекурсию?
2. Какой уровень сложности этой задачи?
3. Как решить задачу иначе?
Решение задачи: «Вычисление суммы необычного ряда (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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д