Другие языки программирования и технологии

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++

#include
#include
using namespace std;
int const n=5;

//=================== Номер 1 отриц. эл-та =======================
double otric1(double massiv[n])
{

int i;
int n1;
//int n2=0;
for (i = 0; i <= n; i++) //определение номера первого отрицательного элемента
{
if (massiv[i] < 0)
{
n1=i;
return n1;
}
}
}
//=================== Номер 1 отриц. эл-та =======================

//=================== Номер 2 отриц. эл-та =======================
double otric2(double massiv[n])
{
int i;
int n2;
int n1;
n1=otric1(massiv);
for (i = n1+1; i <= n; i++) //определение номера второго отрицательного элемента
{
if (massiv[i] < 0)
{
n2 = i;
return n2;
}
}
}
//=================== Номер 2 отриц. эл-та =======================

//=================== Сумма между двумя отриц. эл-тами ============
double summa(double massiv[n])
{
int i;
int n2;
int n1;
n1=otric1(massiv);
n2=otric2(massiv);
if ((n2 != 0) && (n1 != n2)) //проверка на существование границ отрицательных элементов
{
int sum_mezhdu=0;

//нахождение суммы элементов между первым и последним отрицательным элементом
for (i = n1+1; i <= n2; i++)
{
sum_mezhdu += massiv[i]; //sum_mezhdu=n1+n2; (Если сложить их индексы, то прога пашет)

}
return sum_mezhdu;
}
else
cout<<("В массиве отсутствуют два отрицательных элемента! \n");
}
//=================== Сумма между двумя отриц. эл-тами ============

int main()
{
setlocale(LC_ALL, "RUS");
double massiv[n];
int i;
double max=0;
for (i=0;i<=(n-1);i++)
{
cout<<"Введите "<<(i+1)<<" элемент: ";
cin>>massiv[i];
while (cin.fail())
{
cin.clear();
cin.ignore(numeric_limits::max(),'\n');
cout << "Введено некорректное значение. Введите "<<(i+1)<<" элемент: ";
cin >> massiv[i];
}
}

cout<<("номер 1 отриц эл-та: = ")<<otric1(massiv)<<endl; // Норм считает (Номер 1 отриц. эл-т)

cout<<("номер 2 отриц эл-та: = ")<<otric2(massiv)<<endl; // Норм считает (Номер 2 отриц. эл-т)

cout<<("Сумма между 2 отриц: = ")<<summa(massiv)<<endl; // Пишет не то :(

system ("PAUSE");
return 0;

}
.kojlю4Ий Ё)!(
.kojlю4Ий Ё)!(
522
Александр Дужий
Александр Дужий
2 540
Лучший ответ
Виталя Милько Если не трудно скажи плиз а если С# ?
ты бы хоть вопрос задал... что не работает-то?
D.
David .
38 457
#include
#include
#include

using std::cin;
using std::cout;
using std::endl;

void pause(void)
{
_getch();
}

void print( int *array, int SizeOf )
{
for( int i= 0; i < SizeOf; i++ )
{
cout<<array[i]<<' ';
}

cout<<endl;
}

bool SetLine( int *array, int SizeOf, int &one, int &two )
{
bool a= false,
b= false;

for( int i= 0; i < SizeOf; i++ )
{
if(array[i] < 0)
{
one= i;
a= true;
break;
}
}

for( int i= SizeOf - 1; i >= 0; i-- )
{
if(array[i] < 0)
{
two= i;
b= true;
break;
}
}

return a && b;
}

int calculate( int *array, int one, int two )
{
int max= ( one > two ) ? one : two,
min= ( one < two ) ? one : two;

int result= 0;

for( int i= min + 1; i < max; i++ )
{
result+= array[i];
}

return result;
}

void main(void)
{
setlocale(LC_ALL,"Russian");
const int n= 5;
int simple_array[n]= {0};

for( int i= 0; i < n; i++ )
{
cin>>simple_array[i];

while( cin.fail() )
{
cin.clear();
cin>>simple_array[i];
}
}

print( simple_array, n );

int one, two;

if(SetLine( simple_array, n, one, two ))
{
cout<<calculate( simple_array, one, two );
}
else
{
cout<<"Нет a и b"<<endl;
}

pause();
}
Виталя Милько если не трудно скажи плиз а если С# ?

Похожие вопросы