分段故障(堆芯倾倒) 我有点新的C++,我必须填写一个代码。代码应该读取第一个输入中给定的值,然后计算这些值之和的三倍
我这样试过:分段故障(堆芯倾倒) 我有点新的C++,我必须填写一个代码。代码应该读取第一个输入中给定的值,然后计算这些值之和的三倍,c++,segmentation-fault,C++,Segmentation Fault,我这样试过: #include <iostream> #include <vector> using namespace std; int main(int argc, char* argv[]) { if (argc != 2) { return 1; } int n = atoi(argv[1]); vector<double> x; for (int i = 0; i < n; i++)
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char* argv[])
{
if (argc != 2) {
return 1;
}
int n = atoi(argv[1]);
vector<double> x;
for (int i = 0; i < n; i++)
cin >> x[i];
double v = 0;
for (int i = 0; i < n; i++)
v = 3 * x[i];
cout << v << endl;
return 0;
}
不幸的是,我最终陷入了分割错误。。。
这是你的电话号码
或者让它处理动态大小调整:
vector <double> x;
for (int i =0; i <n ; i++) {
double d;
cin >> d ;
x.push_back(d);
}
因为直线向量x;,您已经创建了一个大小为0的向量。所以向量x中没有空间来容纳元素
要更正代码,请执行以下任一操作:
改变线向量x;到矢量xn;或
更改int i=0的行;i>x[i];使温度加倍;对于int i=0;i>温度;x、 推回虚拟;}
你在索引一个向量超出界限,考虑用大小Ni构造它,认为你的答案是正确的,它会解决分割错误,但是它不适合于设置代码:
double dummy;
for (int i =0; i <n ; i++)
{
cin >> dummy;
x.push_back(dummy);
}
vector <double> x;
for (int i =0; i <n ; i++) cin >> x[i] ;
vector <double> x(n);
vector <double> x;
for (int i =0; i <n ; i++) {
double d;
cin >> d ;
x.push_back(d);
}