Даны натуральное число [latex]n[/latex], действительные числа [latex]a_{1}, a_{2}, \ldots a_{n}[/latex].
Вычислить: [latex]a_{1},-a_{1}a_{2},a_{1}a_{2}a_{3}, \ldots (-1)^{n+1}a_{1}a_{2} \ldots a_{n}[/latex].
Решение. Вводим переменную [latex]n[/latex], переменную [latex]a[/latex](куда будем считывать наши числа), а так же [latex]f[/latex]-произведение введенных чисел. Каждый раз в цикле уже введенные числа умножаются на следующее число взятое с противоположным знаком, а изначально «f» равна «[latex]-1[/latex]» так как «Очередное произведение отличается от предыдущего сомножителем [latex](-a_{i})[/latex]».
Тесты:
[latex]n=3[/latex]
Числа[latex](a_{n})[/latex] | Результат: |
1 | 1, -2, 6. |
2 | |
3 |
[latex]n=7[/latex]
Числа[latex](a_{n})[/latex] | Результат: |
1.8 | 1.8, -7.02, 0.000702, 0.055458, -25.3432, 22.8114, -91.2456. |
3.9 | |
0.0001 | |
-79 | |
456.98 | |
0.9001 | |
4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> #include <math.h> using namespace std; int main() { int n; //Количество вводимых чисел. cin >>n; double a,f; //а-переменна для считывания чисел, f-произведения введенных чисел, m-результат из f умноженый на -1 в степени n+1. f=-1; for(int k=1; k<=n; ++k){ cin >>a; f*=-a; cout <<f; //Выводим результат. if(k<n) //Тут думаю нечего обьяснять. cout <<", "; else cout <<"."; } return 0; } |
pow(-1,k+1) — так нельзя
Посмотрите внимательно. Очередное произведение отличается от предыдущего сомножителем (-ai). Об этом и нужно писать в отчёте (и думать). А Вы — «проводим в нем необходимые вычисления»…
Мне просто избавиться от переменной «m», изменить значение «f» на -1, а в 12-й строке изменить «a» на «-a»?
Зачтено