Задача
Даны натуральное число [latex] n [/latex] , действительные числа [latex] x_1, \ldots ,x_n [/latex] ([latex] n[/latex][latex]>[/latex][latex]3[/latex]) . Вычислить:
[latex] (x_{1}+x_{2}+x_{3})x_{2}+(x_{2}+x_{3}+x_{4})x_{3}+\ldots+(x_{n-2}+x_{n-1}+x_{n})x_{n-1}[/latex]Код C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> using namespace std; int main() { int n; double sum = 0; cin >> n; double x1, x2, x3; cin >> x2 >> x3; for (int i = 0; i < n-2; i++ ){ x1 = x2; x2 = x3; cin >> x3; sum += (x1 + x2 + x3) * x2; } cout << "sum" << " = " << sum; return 0; } |
Код C++ на Ideone: http://ideone.com/l7qlqZ
Код Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.*; import java.lang.*; import java.io.*; class SumNum { public static void main (String[] args) throws java.lang.Exception { Scanner read = new Scanner(System.in); int n = read.nextInt(); double sum = 0; double x1; double x2 = read.nextDouble(); double x3 = read.nextDouble(); for (int i = 0; i < n-2; i++ ){ x1 = x2; x2 = x3; x3 = read.nextDouble(); sum += (x1 + x2 + x3) * x2; } System.out.print("Сумма = "+sum); } } |
Код Java на Ideone: A156б
Комментарии
Вводим первые [latex]x_1, x_2, x_3[/latex] , вычисляем сумму [latex]\sum_{i= 3}^{n}\left ( x_{n-2}+x_{n-1}+x_{n} \right )x_{n-1}[/latex], каждый раз заменяя [latex]x_1[/latex] на [latex]x_2[/latex] и [latex]x_2[/latex] на [latex]x_3[/latex], а [latex]x_3[/latex] считывая из стандартного потока .
Тесты
Размер массива (n) | Массив (x[n]) | Результат | Комментарии |
3 | 1 2 3 | 12 | Пройден |
4 | 1.1 2.3 4.5 6.7 | 78.92 | Пройден |
5 | 0 0 2 -4 7 | -24 | Пройден |
В целом похоже на правду. Я бы посоветовал выделить памяти в массиве на 1 больше или сделать нумерацию с 0. Вы выходите за пределы массива и это может привести к неожиданным последствиям.
Исправлено.
Если, например, n=3, то массив состоит из 3-х элементов — x[0], x[1], x[2]. Вы почему-то вводите x[1], x[2], x[3], x[4]. Т.е. больше чем нужно и не с теми номерами.
Пожалуйста распишите всё аккуратно для 3-х или 4=х элементов и исправьте программу.
В условии нет элемента x[0], из этих соображений я выбрала массив начиная с x[1]. А программа вновь исправлена.
Вы можете не использовать нулевой элемент. Ваше право. Но Вы не можете использовать n-й. Его в массиве нет. Есть только элементы от x[0] до x[n -1]. Вам об этом с самого начала пишут. Может есть смысл лично подойти к преподавателю? Или показать программу друзьям? Пусть подскажут.
Зачтено