函数未返回正确的结果
Function not returning correct result
const int CHECK_MAX = 50;
void balanceAccount(double account)
{
double start = 0;
double interest = 0;
double check[CHECK_MAX];
account = (start - check[CHECK_MAX]) * (1 + interest);
cout << account;
}
int main()
{
int sub;
double start = 0;
double interest = 0;
double total = 0;
double check[CHECK_MAX];
void balanceAccount(double);
cin >> start;
for (sub = 0; sub < CHECK_MAX; sub++)
{
cin >> check[sub];
if (check[sub] == 0)
{
cout << "Thank you." << endl;
break;
}
}
cin >> interest;
if (interest == 0)
{
balanceAccount(total);
}
else
{
balanceAccount(total);
}
return 0;
}
该程序的目的是提示用户输入银行帐户的起始余额,然后使用数组输入支票的单个金额(最多 50)并从初始余额中减去它们。然后,如果存在利息值,则将其乘以总计。最终结果是使用 balanceAccount() 函数计算的。我相信在最终计算之前一切都在正常进行。我不断得到错误的计算。我最终将包含货币格式,但现在我只希望它正确计算。谢谢你的时间。
double check[CHECK_MAX];
account = (start - check[CHECK_MAX]) * (1 + interest);
访问check[CHECK_MAX]
无效 - 它从数组的末尾运行。C++数组的索引为 0-n-1,因此数组中的最后一项是 check[CHECK_MAX-1]
。
balanceAccount()
中的所有变量都初始化为零,因此main()
中的其他变量不起作用。要解决此问题,请将变量传递给balanceAccount()
:
void balanceAccount(double localAccount, double localStart, double localInterest, double localCheck[])
{
account = (start - check[CHECK_MAX]) * (1 + interest);
cout << account;
}
您可能还想返回account
。
这一行:
account = (start - check[CHECK_MAX]) * (1 + interest);
超过数组的末尾,它应该是:
account = (start - check[CHECK_MAX-1]) * (1 + interest);
我也不知道你在main()
结束时用if...else
做什么.
基于您的语句的工作代码 试试这个,
#include<iostream>
using namespace std;
const int CHECK_MAX = 50;
void balanceAccount(double total,double interest)
{
double account = (total) * (interest);
cout << account;
}
int main()
{
int sub;
double start = 0;
double interest = 0;
double total = 0;
double check[CHECK_MAX];
void balanceAccount(double,double);
cout << "Enter the beginning balance of the account at the beginning of the month." << endl;
cin >> start;
total = start;
cout << "Enter the individual dollar amount of checks written this month." << endl;
cout << "A maximum number of 50 checks is enforced." << endl;
cout << "Enter a zero when you are finished entering check values." << endl;
for (sub = 0; sub < CHECK_MAX; sub++)
{
cout << "Enter the dollar amount for the checks written, but one at a time." << endl;
cin >> check[sub];
total = total - check[sub];
if (check[sub] == 0)
{
cout << "Thank you." << endl;
break;
}
}
cout << "If applicable, enter an interest rate." << endl;
cout << "If there is no interest rate, enter a 0." << endl;
cin >> interest;
if(interest != 0)
{
cout << "Thank you." << endl;
balanceAccount(total,interest);
}
else
{
cout << "Thank you." << endl;
cout << total << endl;
}
return 0;
}
更改balanceAccount()方法如下。
double balanceAccount(char account[])
{
double start = 0;
double interest = 0;
double check[CHECK_MAX];
double account = (start - check[CHECK_MAX-1]) * (1 + interest);
cout << account;
}
对于主要balanceAccount()
total = balanceAccount(check);
balanceAccount()
传递check
的原因;您在main()
和balanceAccount()
中创建了不同的check
,并且两者都不一样...
此外check[CHECK_MAX]
操作无效... 0 to CHECK_MAX-1
是有效的内存位置,最多可计数CHECK_MAX
...根据上面的代码更改
相关文章:
- 如何返回一个类的两个对象相加的结果
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- C++Brute Force攻击函数不会返回结果
- 如何从递归函数中完全返回,该函数给出了每个函数结果的累积相加?
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 为什么我的程序在 O0 和 O2 的优化级别返回不同的结果
- c++ lambda:柯里和函数:使用按值捕获与按引用捕获返回不同的结果
- C++ 获取函数在常量引用中按值返回的结果
- 如何在一个表达式中生成并返回结果?
- 从返回 std::optional of std::vector 的函数中获取结果到调用方
- 三元运算符在返回语句中给出意外的结果
- 为什么函数 tellg() 没有返回好的结果?
- 为什么我可以改变常量对象中的成员变量,这是返回常量对象函数的结果?
- 有没有办法将 for 循环结果返回到像三元运算符这样的函数中?
- 使用std::tie进行类似golang的错误处理,同时返回结果,是否有缺点?(C++11)
- 检查文本文件中的 0 或 1,并根据结果返回
- 如何使用boost::any_range连接多个boost范围并作为函数w/o的结果返回
- 如何从线程的结果返回Qt对象(Qtfutur)
- C++:当在函数内部创建新对象并将其作为结果返回时,我必须使用新运算符来创建对象