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;
}
Хотя на самом деле нет необходимости использовать массив. Вы можете ввести данные в одну регулярную переменную.