имеется массив double x = { 0.2, -0.02, 0.6, 0.98, 0.5, -0.35, 1.5};
необходимо создать код, который создает заполняет два массива
1-й массив типа инт содержит номера элементов окружающих положительный переход через ноль :
для данного массива int y[4] = {2, 3, 6, 7};
2-й массив типа double содержит значения по этим номерам
для данного случая double z[4] = {-0.02, 0.6, -0.35, 1.5};
причём необходимо учесть, что если в массиве x больше переходов через "0" чем 2 то в массивы y и z должны записаться только первые два перехода через ноль.
Т.е. длина массивов y и z должна быть всегда 4 независимо от того сколько раз меняется знак в массиве x.
пока что смог создать такую конструкцию:
#include <iostream.h>
int main()
{
const int n = 7;
double x[] = { 0.2, -0.02, 0.6, 0.98, 0.5, -0.35, 1.5};
int y[4];
double z[4];
int k = 0;
for(int i = 0; i < n - 1; ++i)
{ if(x[i] < 0 && x[i + 1] >= 0)
{
y[k] = i+1;
k++;
y[k] = i+2;
k++;
}
}
cout << y[0] <<' ' << y[1]<<' ' << y[2]<<' ' << y[3] ;
cin.get();
cin.get();
return 0;
}
но она заполняет только массив y = {2, 3 6, 7}. и не решена проблема когда перехожов через ноль больше чем два.
никак не могу подобрать конструкцию чтобы заполнить массив z соответствующими значениями.
как решить выше названные проблемы?
Буду очень благодарен за помощь.
Отредактировано Franky (2010-03-08 23:43:12)