好的,经过这个尴尬的工作时间之后,我想我想出了一些不那么令人讨厌的“真正的”程序员。 请允许我提交我的简陋且可能很糟糕的代码 它完全有效,但现在我的问题是,如果响应为负数,我试图让它回到最初的问题。我得到它说,“嘿!不要输入负数!”,然后它会进入下一个提示。这是负输入的当前输出:
**欢迎使用消费贷款计算器** 你想借多少钱? $ -100 请输入正贷款金额。 你的年度百分率是多少? %
......并积极投入:
**欢迎使用消费贷款计算器** 你想借多少钱? $ 100 你想借多少钱? $ 100 你想借多少钱? $
我希望它回到“你想借多少钱?”如果用户输入为负数,只有输入为正数时才转到下一个问题。我现在做错了什么?
#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstdlib>
using namespace std;
void get_input (double &principal, double &APR, double mon_pay);
int main()
{
double loan; // principal
double APR; // APR
double mon_pay; //monthly payment
cout << "** Welcome to the Consumer Loan Calculator **"<<endl;
do {
cout << "How much would you like to borrow? $";
cin >>loan;
if (loan < 0)
cout <<"Please enter a positive loan amount.";
}
while (loan > 0);
cout << "What is your annual percentage rate? %";
cin >>APR;
cout << "What is your monthly payment? $";
cin >> mon_pay;
APR = APR/100;
get_input (loan, APR, mon_pay);
}
void get_input (double &principal, double &APR, double mon_pay)
{
double total, add=0; // Total payment
int tpay=1; //Total months of payment
while (principal > 0)
{
add = principal * (APR/100);
principal = ((principal+add) - mon_pay);
tpay++;
}
total = mon_pay + principal;
cout << "Your debt will be paid off after "<< tpay << " months, with a final payment of just $" <<setprecision(3)<<total<<endl;
cout <<"Don't get overwhelmed with debt!"<<std::endl;
}
答案 0 :(得分:2)
这一行肯定是错的:
while (int tp=1, double p <= double m, double sub--m)
答案 1 :(得分:1)
从根本上说,这段代码存在很多问题。我建议开始消除所有全局变量。它们会使您的代码更难以调试,并且通常 一般认为
此外,我会为您的变量选择更多描述性标识符 - 它会使逻辑更少深奥。例如,m
是变量名称的不良选择。为什么不选择monthly_pay
或更清楚的东西?
此外,while循环使用 boolean 的参数。你所写的内容没有意义,如果现在没有尖叫,我老实说也不确定编译器会做什么。我的猜测是它会在int tp=1
始终评估为真的无限循环中。
最后,学习模块化代码是值得的。根据您的代码,我冒昧地说您是代码领域的初学者。模块化你的代码是非常好的做法(并且很好地遵循逻辑)。如果您手动执行此操作,您会遵循哪些合乎逻辑的步骤?
如果有更多详细信息,预期输出等,我建议您将其添加到您的问题中,否则可能会被标记为过宽。
祝你的家庭作业好运。 erip
修改强>
完全忘记了功能。
像数学一样,函数需要参数。
f(x)= x ^ 2 + 2x - 1.此函数的参数显然是x。
在编程中,一些函数也需要参数。
让我们说你试图模仿this等式...
您可能会考虑这样做:
#include <math.h>
double compound_interest(double r, int n, double t, double P)
{
return P*pow((1+ r/n), n*t);
}
所以,如果你想在主
中调用它//insert header stuff, function declarations, etc.
int main()
{
double rate = 0.1, // 10%
time = 10.0, // 10 months
principle = 125.00, // $125.00
accumulated; // This is what we want to know
int payment_period = 12; // 12 months
accumulated = compound_interest(rate, payment_period, time, principle);
cout << "Total accumulated cost is " << accumulated << endl;
return 0;
}