c ++程序停止使用atof()
c++ program stop working with atof()
这是我的第一个 C++ 程序。我成功构建了它。当我 运行 它时,Windows 一直给我程序停止工作,结果与我尝试使用 eclipse 运行 它的结果相同。
这是我的代码:
#include <iostream>
#include <cmath>
#include <stdlib.h>
#include <vector>
using namespace std;
int main(){
string input;
vector<double> value;
int count = 0;
while(input != "#") {
cout << "Enter value " << count + 1 << "\n";
cin >> input;
cout << input;
if (input != "#") {
value[count] = atof(input.c_str());
}
count++;
}
cout << count;
double sum = 0;
for (int i = 0; i < count; i++) {
sum += value[i];
}
double ave = sum/count;
double dev = 0;
for (int i = 0; i < count; i++) {
dev += pow((value[i] - ave), 2);
}
dev = sqrt(dev / (count - 1));
cout << "\nThe average is " << ave << "\n";
cout << "The standard deviation is" << dev << "\n";
return 0;
}
有人知道吗?谢谢。
value[count] = atof(input.c_str());
是个问题,因为 value
中没有足够的 space。使用
value.push_back(atof(input.c_str()));
相反。
您在 while
循环中也存在逻辑错误。即使输入为 "#"
,count
也会递增。我建议将其更改为:
while(true) {
cout << "Enter value " << count + 1 << "\n";
cin >> input;
cout << input;
if (input == "#") {
break;
}
value.push_back(atof(input.c_str()));
}
count = value.size();
我在别人的电脑上试过代码。它很好用。我认为我的编译器出了问题。
这是我的第一个 C++ 程序。我成功构建了它。当我 运行 它时,Windows 一直给我程序停止工作,结果与我尝试使用 eclipse 运行 它的结果相同。
这是我的代码:
#include <iostream>
#include <cmath>
#include <stdlib.h>
#include <vector>
using namespace std;
int main(){
string input;
vector<double> value;
int count = 0;
while(input != "#") {
cout << "Enter value " << count + 1 << "\n";
cin >> input;
cout << input;
if (input != "#") {
value[count] = atof(input.c_str());
}
count++;
}
cout << count;
double sum = 0;
for (int i = 0; i < count; i++) {
sum += value[i];
}
double ave = sum/count;
double dev = 0;
for (int i = 0; i < count; i++) {
dev += pow((value[i] - ave), 2);
}
dev = sqrt(dev / (count - 1));
cout << "\nThe average is " << ave << "\n";
cout << "The standard deviation is" << dev << "\n";
return 0;
}
有人知道吗?谢谢。
value[count] = atof(input.c_str());
是个问题,因为 value
中没有足够的 space。使用
value.push_back(atof(input.c_str()));
相反。
您在 while
循环中也存在逻辑错误。即使输入为 "#"
,count
也会递增。我建议将其更改为:
while(true) {
cout << "Enter value " << count + 1 << "\n";
cin >> input;
cout << input;
if (input == "#") {
break;
}
value.push_back(atof(input.c_str()));
}
count = value.size();
我在别人的电脑上试过代码。它很好用。我认为我的编译器出了问题。