int main()
{
int n, inInt;
vector <int> list;
ifstream ifs("1.txt");
float a;
ifs >> a;
std::vector<int> result;
int temp;
while(! ifs.eof())
{
ifs >> temp;
result.push_back(temp);
}
int b;
b = result.size();
float array[b+1];
int i;
array[0] = a;
for(i = 1;i < b+1;i++) {
array[i] = (array[i-1] + result[i]-2*array[i-1] * result[i]/a);
}
cout << array[b];
system("pause");
return 0;}
基本上在我的代码中,我构建了一个向量并构建了一个数组,并尝试使用数组中向量的数据。但是,当我对代码进行文本处理时,它给了我一个不正确的数字。
答案 0 :(得分:2)
temp
不是数组,temp
是一个int。你试图在int上使用operator[]
你不能这样做。此外,VLA(可变长度阵列)是GCC扩展,因此不是标准的。我建议你替换这一行:
float array[b+1];
使用:
std::vector<float> array(b+1);
答案 1 :(得分:0)
我至少看到两个问题。首先,your input loop is incorrect并在result
中插入无效条目。您可以使用以下输入循环来解决此问题:
while (ifs >> temp)
{
result.push_back(temp);
}
其次,向量result
包含b
元素,因此有效索引为[0..b-1]
。您的循环结束条件i < b+1
将读取result
结束后的一个元素。我认为你可以通过这样做来解决这个问题:
for(i = 0; i < b; i++)
{
array[i+1] = (array[i] + result[i]-2*array[i] * result[i]/a);
}
当我进行这些更改并使用3 2 2
进行输入时,输出为1.66667