float deposit (float balance)
{
float amount[3];
system("cls");
cout<<"Enter the amount you wish to deposit"<<endl;
cin>>amount[3];
balance = balance + amount[3];
writeBalance(balance);
return balance;
}
//This is a function to allow the user to increase their balance
но когда я ввожу сумму в разделе депозита программы, всплывающее окно появляется и говорит:
Run-Time Check Failure #2 - Stack around the variable 'amount' was corrupted.
любая помощь будет большой спасибо
Так как у вас есть float amount[3];
, вы можете получить доступ только amount[0]
, amount[1]
, а также amount[2]
, Любой другой индекс с дать вам неопределенное поведение что является причиной сбоя вашей программы.
Также, никогда использовать float
представлять реальные деньги. Вы будете точны только до 7 значащих цифр. Используя double
тоже небезопасно, хотя точность (около 15 значащих цифр) будет лучше. Лучше всего использовать валюту. Посмотрите на этот вопрос: Лучший способ хранить значения валют в C ++
Вы должны ввести каждый элемент массива в цикле. Измените код следующим образом
float deposit (float balance)
{
const size_t N = 3;
float amount[N];
system("cls");
cout<<"Enter the amount you wish to deposit"<<endl;
for ( size_t i = 0; i < N; i++ )
{
cin>>amount[i];
balance = balance + amount[i];
}
writeBalance(balance);
return balance;
}
Хотя на самом деле нет необходимости использовать массив. Вы можете ввести данные в одну обычную переменную.