C ++ программа перестает работать с atof ()

Это моя первая программа на C ++. Я успешно построил это. Когда я запускаю его, Windows продолжает давать мне, программа перестает работать, тот же самый результат, что я пытаюсь запустить его с затмением.

Вот мой код:

#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;
}

У кого-нибудь есть идеи? Спасибо.

0

Решение

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();
1

Другие решения

Я попробовал код на чужом компьютере. Работает отлично. Я думаю, что-то идет не так для моего компилятора.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector