Всем доброго времени суток! Хотел бы попросить вас о помощи. Не могу понять, как сделать следующее задание. Нужно вычислить:"The sum of the array elements located between the first and second negative elements."
Есть тело кода, однако не могу выяснить, как посчитать сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
Вот само тело кода:
#include <iostream>
#include <clocale>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
using namespace std;
int main()
{
using std::setlocale;
setlocale(LC_ALL,"");
srand(time( 0));
int a[15],n,i,k, sum;
printf("Выберите тип ввода: 1-c клавиатуры, 2-с помощью rand() ");
scanf("%d",&k);
if ((k>0)&&(k<=2))
{
printf ("Введите размер массива не более 15 элементов, n = ");
scanf("%d",&n);
printf("Массив A \n");
switch(k) {
case 2: for (i=0; i<n; i++){
a[i] = rand()%21-10; // Заполнение массива А случайными числами вдиапазоне -10..10
printf("%4d",a[i]);}
break;
case 1: for (i=0; i<n; i++) scanf("%d",&a[i]);
break;
}
}
else {puts("Не выбран тип ввода...");
return 1;}
sum=0;
for(i=n;i>0;i--){
if(a[i]>=0) sum+=a[i];
else break;
}
cout<<"сумма после последнего отрицательного= "<<sum;
return 0;
}
Ну логика же несложная. Встретили отрицательное - начали считать. Встретили второе - прекратили работу.
sum=0;
int state = 0;
for(i=0;i<n;i++){
if(a[i]<0)
state++;
if (state == 2)
break;
if(a[i]>=0 && state==1)
sum+=a[i];
}
Можно ли оставлять выход за границы массива в программах? Чем это грозит? Что происходит при выходе за его границы?
Пришлось полностью восстанавливать пример, у вас не хватаетgetNodeValue()