Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ (该功能用于计算SMA)。FA.exe中0x00509159处引发异常:0xC0000005:访问冲突读取位置0x0040400C_C++ - Fatal编程技术网

C++ (该功能用于计算SMA)。FA.exe中0x00509159处引发异常:0xC0000005:访问冲突读取位置0x0040400C

C++ (该功能用于计算SMA)。FA.exe中0x00509159处引发异常:0xC0000005:访问冲突读取位置0x0040400C,c++,C++,我正在计算SMA的收盘价。我的程序应该是这样计算的。5天SMA的第一天值将以索引时间_frame-1存储在数组中 Daily Closing Prices: 1.4660, 1.4627, 1.4600, 1.4607, 1.4609, 1.4691, 1.4687 First day of 5-day SMA: (1.4660 + 1.4627 + 1.4600 + 1.4607 + 1.4609) / 5 = 1.4621 Second day of 5-day SMA: (1.4627 +

我正在计算SMA的收盘价。我的程序应该是这样计算的。5天SMA的第一天值将以索引时间_frame-1存储在数组中

Daily Closing Prices:
1.4660, 1.4627, 1.4600, 1.4607, 1.4609, 1.4691, 1.4687
First day of 5-day SMA:
(1.4660 + 1.4627 + 1.4600 + 1.4607 + 1.4609) / 5 = 1.4621
Second day of 5-day SMA:
(1.4627 + 1.4600 + 1.4607 + 1.4609 + 1.4691) / 5 = 1.4627
Third day of 5-day SMA:
(1.4600 + 1.4607 + 1.4609 + 1.4691 + 1.4687) / 5 = 1.4639
这是我的typedef结构

typedef struct
{
    char date[11];
    double price;
    double SMA;
    double EMA;
}DATA;
这是主要功能

int main(void)
{
    DATA forex[100];
    int time_frame, count;
    get_data(&time_frame, &count, forex);
    calculate_SMA(time_frame, count, forex);

    return 0;
}
此函数用于读取我的文本文件forexPrice.txt,并获取用户对时间帧的输入

void get_data(int *time_frame, int *count, DATA forex[])
{
    int i = 0;
    bool cont;

    ifstream infile("forexPrice.txt", ios::in);
    if (!infile)
        cout << "Error opening input file!";
    else
    {
        *count = 0;
        do
        {
            infile >> forex[i].date >> forex[i].price;
            cout << forex[i].date << "\t" << fixed << setprecision(4) << forex[i].price << endl;
            i++;
            (*count)++;
        } while (!infile.eof());
        infile.close();
    }

    do
    {
        cont = true;
        cout << "Enter the number of days to calculate SMA and EMA: ";
        cin >> *time_frame;
        if (*time_frame < 1 || *time_frame >= *count)
        {
            cout << "Do not enter number smaller than 1 or larger than " << *count << ". Please enter again.\n";
            cont = false;
            //break;
        }
    } while (cont == false);
}
想想这个

for (int i = 0; i < i + time_frame; i++)
这个循环什么时候才能停止

我猜你是这个意思

for (int i = 0; i < time_frame; i++)

请发一封信。输入是什么?@idclev463035818 55是来自用户的输入,但文件中是什么?最好是在代码中包含输入,而不是从文件中读取,假设错误不是从文件读取部分产生的。您也发布了函数,但谁调用它们?该函数的参数是什么?已经指出的错误可能是运行时错误的原因,但是如果没有完整的示例,就无法确定这一点。如果您在这里从头开始构建一些东西,那么请仔细考虑使用double来表示货币价值。你能用十进制吗?Boost有一个,还有一个!infle.eof。所示代码中存在多个基本错误。这就是当您先编写一大堆代码,然后再尝试确定它是否有效时所发生的情况。由于游戏中有过多的bug,导致了大量的混乱。你应该从头开始。首先只编写几行代码或一个小函数。测试一下。确保它有效。编写更多的代码。等等,但是我如何使它在每次我增加的时候都相应地增加,例如,如果我的time_frame=5,我希望循环将数组索引0到4的所有数字相加,然后第二次,我希望循环将数组索引1到的所有数字相加5@YingShuang我不太确定,因为我不知道你到底想做什么,但我猜是int I=j;ifor (int i = 0; i < time_frame; i++)