0

これは 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;
}

誰でも何か考えがありますか?ありがとうございました。

4

2 に答える 2

1
value[count] = atof(input.c_str());

value十分なスペースがないので問題です。使用する

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();
于 2015-11-09T19:40:01.253 に答える
0

他のコンピューターでコードを試しました。それはうまくいきます。コンパイラに問題があると思います。

于 2015-11-09T20:35:19.503 に答える