Я попытался прочитать несколько разных постов о стек, окружающий переменную, поврежден но у меня проблемы с подключением ответов к моему коду. Мне интересно, почему я получаю сообщение об ошибке, в котором говорится, что стек окружает scoreArray поврежден Я пытался использовать несколько переменных для увеличения местоположения в массиве. Я знаю, что код написан не очень хорошо, но я был бы признателен, если бы кто-нибудь помог мне понять, почему я получу это сообщение.
Огромное спасибо.
double sum = 0.0;
double SumFunction(double printArray[]);
int i = 0;
int j = 0;
const int SIZE = 4;
void main()
{
double input = 0.0;
vector<double> scores;
double scoreArray[SIZE];
do
{
cout << "Please enter a decimal value: ";
cin >> input;
scores.push_back(input);
} while (scores.size() <= SIZE);
do
{
int z = 0;
scoreArray[i] = scores[z];
i++;
z++;
} while (i <= SIZE);
SumFunction(scoreArray);
cout << sum;
system("PAUSE");
}
double SumFunction(double printArray[])
{
do
{
sum += printArray[j];
j++;
} while (j <= SIZE);
return sum;
}
Так как:
/*(1)*/ } while (scores.size() <= SIZE);
/*(2)*/ } while (i <= SIZE);
/*(3)*/ } while (j <= SIZE);
должно быть:
/*(1)*/ } while (scores.size() < SIZE);
/*(2)*/ } while (i < SIZE);
/*(3)*/ } while (j < SIZE);
так как ваш do...while
циклы входят в другую итерацию, когда индекс уже превышает выделенное пространство scoreArray
,