C++ (该功能用于计算SMA)。FA.exe中0x00509159处引发异常:0xC0000005:访问冲突读取位置0x0040400C
我正在计算SMA的收盘价。我的程序应该是这样计算的。5天SMA的第一天值将以索引时间_frame-1存储在数组中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 +
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;i
for (int i = 0; i < time_frame; i++)