В следующем коде я пытаюсь найти скользящее среднее;
int slots = int ((sr+e)/mst); // finding number of slotsint temp2;
int temp1;
if (temp1 == null)
{
temp2 = 0;
}
temp2=temp1; // previously found number of slots
temp1=slots; // presently found number of slots
double mov_avg = (temp2+temp1)/2; //moving average
Проблема в том, что когда я компилирую, я получаю предупреждение о том, что temp1 не инициализирован; Проведя небольшое исследование, я обнаружил, что переменные не хранят нулевое значение или нулевое значение по умолчанию в C ++, когда они не инициализированы;
Я не могу поставить строку как temp1 = 0 в коде, так как ее значение потребуется для следующей итерации, которая будет передана в переменную temp2; оба из которых потребуются для вычисления скользящего среднего.
Итак, в основном это проблема первого функционирования вышеуказанной процедуры; потому что, если вы пройдете мимо этого, вышеупомянутой логики будет достаточно для расчета скользящего среднего. Что, вы парни, думаете?
Заранее спасибо.
Самое простое решение — инициализировать вашу переменную первым значением вашей последовательности:
int prev = getValue();
while (valuesAvailable())
{
int next = getValue();
double moving_average = (prev + next) / 2.;
// use moving_average
prev = next;
}
Обратите внимание, что я предположил, что в вашей последовательности было хотя бы одно значение: вам может потребоваться выполнить проверку, прежде чем получить первое значение, чтобы убедиться, что оно действительно там.
Других решений пока нет …