Я пишу программу на C для расчета скользящей средней (MA) цены акций.данные доступны в массиве datavalue [count], count = это количество значений данных.Теперь я пытаюсь написать функцию для MA .. но мне нужно передать три аргумента в функции следующим образом
- int count = количество значений данных
- int K =период скользящей средней
- тип массива с плавающей точкой datavalue = массив, содержащий цены акций.
Я написал следующий код (как часть полного кода для расчета MA).он работает нормально.
float data[count], mag[count];
double avg, sum;
for (i=0; i<=count; i++)
data[i] = numberArray[i];
for (i=0; i<k-1; i++) {
mag[i-1] = 0;
sum = sum + data[i];
}
for (i=k-1; i<=count; i++) {
mag[i-1] = avg;
sum = sum + data[i] - data[i-k];
avg = sum / k;
}
Выше код работает нормально в пределах одного основного файла.но так как мне приходится снова и снова использовать MA в моей программе, я решил сделать отдельную функцию для MA.я сделал это следующим образом
float *mavg(int count, int k, float datavalue)
{
float *mag = malloc(sizeof(float)*count);
//float data[count];
float avg=0, sum=0;
int i;
for (i=0; i<=count; i++) {
for (i=0; i<k-1; i++) {
mag[i-1] = 0;
sum = sum + datavalue[i];
}
}
for (i=k-1; i<=count; i++) {
mag[i-1] = avg;
sum = sum + datavalue[i] - datavalue[i-k];
avg = sum/k;
}
return mag;
}
НО код выше не работает при вызове из основного файла.При компиляции он показывает ошибку
подписанное значение не является ни массивом, ни указателем, ни вектором
в следующих строках:
sum = sum + datavalue[i];
sum = sum + datavalue[i] - datavalue[i-k];