我现在有这个代码可以运行并根据设置的条件计算帐户的利息。但是,我现在需要编写一个名为CalcInterest()
的函数,该函数将仅参数 - 一个帐户, - 并返回计算的兴趣。
#include <iostream>
using namespace std;
int main()
{
int AccountNumber[8] = { 1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342 };
float Balance[8] = { 4254.40, 27006.25, 123.50, 85326.92, 657.0, 7423.34, 4.99, 107864.44 };
int DaysSinceDebited[8] = { 20, 35, 2, 14, 5, 360, 1, 45 };
int interest = 0;
//add your code here
cout << "Account Number\t" << "Balance\t\t" << "Days\t" << "Interest\t" << endl;
for (int i = 0; i < 8; i++)
{
if (Balance[i] > 10000 || DaysSinceDebited[i] > 30)
interest = (Balance[i] * 0.06);
else
interest = (Balance[i] * 0.03);
cout << AccountNumber[i] << "\t\t" << Balance[i] << "\t\t" << DaysSinceDebited[i] << "\t" << interest << "\t" << endl;
}
system("pause");
return 0;
}
以下是我的尝试,该功能不起作用,但没有错误
#include <iostream>
using namespace std;
float CalcInterest(int AccountNum);
int main()
{
cout << "Account Number\t" << "Balance\t\t" << "Days\t" << "Interest\t" << endl;
float CalcInterest(int AccountNum);
system("pause");
return 0;
};
float CalcInterest(int AccountNum) {
int interest = 0;
float Balance[8] = { 4254.40, 27006.25, 123.50, 85326.92, 657.0, 7423.34, 4.99, 107864.44 };
int DaysSinceDebited[8] = { 20, 35, 2, 14, 5, 360, 1, 45 };
int AccountNumber[8] = { 1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342 };
for (int i = 0; i < 8; i++)
{
if (Balance[i] > 10000 || DaysSinceDebited[i] > 30)
return interest = (Balance[i] * 0.06);
else
return interest = (Balance[i] * 0.03);
cout << AccountNumber[i] << "\t\t" << Balance[i] << "\t\t" << DaysSinceDebited[i] << "\t" << interest << "\t" << endl;
}
}
答案 0 :(得分:0)
我的编译器(GCC 4.9.2)说你的函数CalcInterest
有一个名为AccountNumber
的参数,在这个函数中你有一个名为AccountNumber
的数组,在我重命名之后,没问题。
答案 1 :(得分:0)
AccountNumber为int,您尝试在函数中取消引用 账户号码[i]中。你需要传递int数组或int指针。
示例:
float CalcInterest(int *)
致电:
CalcInterest(AccountNumber)
答案 2 :(得分:0)
首先,可能是由代码的复制和粘贴引起的严重语法错误:
int main()
{
/* ... */
float CalcInterest(int AccountNumber);
/* ... */
};
如果你(1)打算调用函数CalcInterest()
,你可以写出它的名字,然后在圆形的parens中写出实际的参数:
CalcInterest(5);
如果你想声明函数,语法本身是正确的,但函数声明不属于另一个函数(缺少完全在另一个代码块内定义的lambda。事实是,据我所知,这样编译很好,这样:声明类型为CalcInterest
的变量float
,并向其构造函数传递一个名为{{1}的默认构造int
我是对的?应用了C ++语法的强大功能。
你的第二个错误就是:
AccountNumber
在您(重新)将float CalcInterest(int AccountNumber) {
/* ... */
int AccountNumber[8] = { 1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342 };
if (AccountNumber == 1001 /* ... */) { /* ... */ }
声明为长度为AccountNumber
的{{1}}数组之后,您的int
函数参数会被遮蔽,因此编译器会认为您要进行比较8
到数组int AccountNumber
。出现错误:
1001
第三个错误,这次是合乎逻辑的,是int AccountNumber[8]
循环内的返回。想一想,在第一次循环迭代中,第一个main.cpp: In function 'float CalcInterest(int)':
main.cpp:21:24: error: declaration of 'int AccountNumber [8]' shadows a parameter
int AccountNumber[8] = { 1001, 7940, 4382, 2651, 3020, 7168, 6245, 9342 };
^
main.cpp:33:30: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (AccountNumber == 1001 || AccountNumber == 4382 || AccountNumber == 3020 || AccountNumber == 6245)
^
将被执行,并且函数内部没有任何其他内容将被运行!那是你打算做的吗?
最后,据我所知,你想将for循环中的代码分解为函数吗?可能会这样做:
for