неинициализированная переменная в вычислении скользящего среднего

В следующем коде я пытаюсь найти скользящее среднее;

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; оба из которых потребуются для вычисления скользящего среднего.

Итак, в основном это проблема первого функционирования вышеуказанной процедуры; потому что, если вы пройдете мимо этого, вышеупомянутой логики будет достаточно для расчета скользящего среднего. Что, вы парни, думаете?

Заранее спасибо.

-3

Решение

Самое простое решение — инициализировать вашу переменную первым значением вашей последовательности:

int prev = getValue();

while (valuesAvailable())
{
int next = getValue();
double moving_average = (prev + next) / 2.;
// use moving_average
prev = next;
}

Обратите внимание, что я предположил, что в вашей последовательности было хотя бы одно значение: вам может потребоваться выполнить проверку, прежде чем получить первое значение, чтобы убедиться, что оно действительно там.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]