Задача
Даны действительные числа [latex]a_{1},a_{2}, \ldots [/latex]. Известно, что [latex]a_{1}>0[/latex] и что среди [latex]a_{2},a_{3}, \ldots[/latex] есть хотя бы одно отрицательное число. Пусть [latex]a_{1},\ldots , a_{n}[/latex] -– члены данной последовательности, предшествующие первому отрицательному члену ([latex]n[/latex] заранее известно). Получить:
a) [latex]a_{1}+a_{2}+ \cdots +a_{n}[/latex];
Элементы последовательности | Сумма элементов до отрицательного числа. |
3 4 6 -2 3 1 | 13 |
2 8 -1 2 3 4 5 | 10 |
1 0 5 0 0 -1 0 0 0 | 6 |
4.2 3.2 1 -5 1 5 | 8.4 |
От нас требуют посчитать сумму элементов последовательности, которые стоят до первого отрицательного элемента этой же последовательности. Для того, что бы это сделать, мы, в цикле, считываем числа с потока данных. Если попадается отрицательное число, то цикл останавливается и выводит накопленную сумму.
Ниже представленная сама программа (C++).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> using namespace std; int main() { double sum=0; //Сумма элементов double a; while(cin >> a && a>=0) //чтение данных с входного потока { sum+=a; } printf("Сумма членов последовательности до первого отрицательного элемента равна %5.3lf \n",sum); return 0; } |
Код на 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 Brovko { public static void main (String[] args) throws java.lang.Exception { double sum=0, a; Scanner in = new Scanner(System.in); while(in.hasNext()) { a = in.nextDouble(); if (a<0) { break; } sum+=a; } System.out.format("Сумма членов последовательности до первого отрицательного элемента равна %5.1f \n",sum); } } |
Так же вы можете воспользоваться ссылкой (C++)/ссылкой (Java), для ознакомления с программой.
Вы пишите «n заранее известно» это НЕ соответствует условию. Нужно суммировать до тех пор пока не встретится отрицательное число. И прочтите здесь как решать задачи этого раздела. Там объясняется почему нет необходимости в массивах.
Понял, что можно сделать проще.
Исправил.
Зачтено.
Дело не в том, что так проще. Просто сейчас Вы решили именно ту задачу, которую нужно.
Все хорошо, но небольшая ошибка в отступе строки System.out.format(...). Java решение засчитано, тем не менее поправьте отступ этой строки.
Странно, что Вы решили воспользоваться условным оператором, хотя в программе на С++ в с лёгкостью без неё обошлись.