Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 107
Благодарности: 9

Профиль | Цитировать


Цитата bangybam:
а вот когда первое введенное значение равно 0 то сумму пишет тоже равную нулю. »
Конечно не работает, написанный код совсем не то делает.
Цитата bangybam:
s+= a[0]<0||a[9]<0 ? 0 : a[i]; »
Твой код делает следующее: если первый из введённых 10ти элементов меньше нуля, или последний меньше нуля, то прибавляем к s 0 во ВСЕХ десяти проходах цикла, а если же хотя бы один из этих элементов массива (1ый или 10ый) больше нуля, то добавляем текущее.

Тебе надо так:

Цитата bangybam:
суммировать элементы которые находятся между первым и последним позитивным элементом( не включая их) »
Код: Выделить весь код
bool start=FALSE; // флаг, показывающий, попадался ли уже среди элементов массива положительный, т.е. стоит ли СЛЕДУЮЩИЙ положительный прибавлять
int last=0; // сюда занесём ПОСЛЕДНИЙ ПОЛОЖИТЕЛЬНЫЙ элемент массива, чтобы потом его вычесть из суммы
for (int i=0; i<10; i++)
{
if(a[i]>0) {
       if (start==FALSE) start=TRUE;    //если встретили первый ПОЛОЖИТЕЛЬНЫЙ (это не обязательно a[0]) элемент массива, то меняем флаг,
                                                       //чтобы в будущем знать, что как минимум 1 положительный уже был
       else {
                    s=s+a[i];           // иначе, если start уже равно TRUE, т.е. уже положительный был, то встреченный нами положительный a[i] надо прибавить к сумме
                    last = a[i];
}
s = s - last;
printf("%i\n",s);
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:11, 24-10-2012 | #7