В одномерном массиве, состоящем из N целых элементов, вычислите сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
Что я не так сделала?
Помогите…

Если требуется выполнение определенных действий при каком-то условии-триггере (в данном случае нахождение отрицательного элемента), нужно это условие сохранять в виде переменной индикатора или флага. Флаг истина - считаем данные. Флаг ложь (по умолчанию) - нет.
Делаем цикл всех переменных в массиве
И в теле цикла следующие действия по приоритету:
Если флаг = истина (тоесть уже был отрицательный элемент до этого) и текущий элемент менее нуля значит мы все сосчитали и требуется прервать цикл breake;
Если флаг = истина - считаем нашу сумму;
Если текущий элемент отрицательный - установить флаг в истину. (начало счета будет со следующего элемента)
И после цикла выводим сумму.
#include < iostream >
using namespace std;
int main()
{
int sum = 0;
const int size = 8;
bool flag = false;
int mass[size] = { -9,3,3,3,-8,8,3,0 };
for (int i = 0; i < size; i++)
{
if (flag && (mass[i] < 0)) break;
if (flag) sum += mass[i];
if (mass[i] < 0) flag = true;
}
cout << sum;
}
попробуй поменять b+=b на b+=1
после первого отрицательного значения b=0 станет равно 1, после второго отрицательного значения b=2, но выхода из цикла не будет (с этим можно и заморочиться)
а да... нафига цикл while? замени просто на if
цикл то бесконечный: while (b == 1)
____________
UPD:
int flag = 1
for(int i = 0; i < size; i++) {
if (mas[i] < 0) { flag = (flag) ? 0 : 1; if (flag) break; }
else if (!flag) sum += mas[i];