c++ - 计算贷款数据的支付字符串
问题描述
例子:
输入:cpi = 100.0,支付 = [100.0, 94.0, 90.0, 100.0, 200.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0 ]
输出:paystring = [0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
解释:由于第一次付款是 100.0 并且大于或等于 cpi - 5.0 (95.0),那么输出中的第一个元素是 0。然后下一个元素是 1,因为 94.0 小于 cpi - 5.0 (95.0),即错过了一笔付款,然后因为下一个元素 90.0 小于 cpi - 5.0 (95.0),即错过了另一笔付款,而不是现在我们在 2 (或 2 总错过付款)。然后在下一个元素中,我们有 100 笔付款,所以现在我们支付了到期的付款,但我们仍然没有支付上个月的其他两笔付款,所以我们仍然是 2。然后流程继续.
到目前为止我有这个:
double cpi = 100.0;
std::vector<double> payments = { 100.0, 94.0, 90.0, 100.0, 200.0, 300.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0 };
std::vector<int> paystring(payments.size(), 0);
int count = 0;
for (int i = 0; i < payments.size(); ++i) {
if (payments[i] <= cpi - 5.0) {
paystring[i] = ++count;
}
else {
paystring[i] = count;
}
}
for (auto it : paystring)
std::cout << it << " ";
虽然,这是不正确的,因为当我说全额付款或超过应付金额(cpi)时它无法更新计数。我只是想知道我需要改变我的逻辑来完成这项工作。如果提供的示例不清楚,请告诉我。
例如说我有
输入:cpi = 100.0,支付 = [100.0, 94.0, 90.0, 100.0, 200.0, 100.0, 300.0, 100.0, 100.0, 100.0, 100.0, 100.0 ]
输出:[0, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0]
但我明白了
[0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
这里还有几个正确的例子:
解决方案
你有一个条件,如果付款太低,就会增加罚款,客户落后一个月。
添加另一个条件:如果多付了钱,例如 200 美元,你想给客户信用,这让客户提前一个月。然后添加一个条件,即客户不在负数之前。
std::vector<double> payments = {
100, 94, 90, 100, 200, 100, 300, 100, 100, 100, 100, 100
//"0 1 1 0 -1 0 -2 0 0 0 0 0 <-penalty
//"0 1 2 2 1 1 0 0 0 0 0 0 <-penalty sum
};
double cpi = 100.0;
for(int i = 0; i < payments.size(); ++i)
{
double payment = payments[i];
if(payment <= (cpi - 5.0))
{
//one month behind on payment
count++;
}
while((payment > cpi) && count)
{
//customer made large payment.
//allow count to decrease.
//but count cannot be less than zero
count--;
payment -= cpi;
}
paystring[i] = count;
}
输出100, 94, 90, 100, 200, 100, 100, 100, 100, 100, 100, 100
:
0 1 2 2 2 2 2 2 2 2 2 2 //expected output
0 1 2 2 1 1 1 1 1 1 1 1 //result
输出100, 94, 90, 100, 200, 100, 300, 100, 100, 100, 100, 100
:
0 1 2 2 1 0 0 0 0 0 0 0 //expected output
0 1 2 2 1 1 0 0 0 0 0 0 //result
我的输出不一样,也许预期的输出不正确或者你遗漏了一些东西。请注意,第 6 次付款是 100,因此该指数不应该有任何变化。
推荐阅读
- java - java流groupBy收集器用于空键并在分组值列表上应用收集器
- javascript - 确保 useState() 钩子已被 useEffect 钩子更新?
- reactjs - 如何在本机反应中获取平面列表中的行索引
- python - matplotlib 小部件在 Jupyterlab 2.1.2 中不起作用
- reactjs - 使用 https 部署 React 时出现 404 错误,但适用于 http(使用 GoDaddy)
- css - 如何覆盖 React 本机 web 预定义的 css
- javascript - 单击按钮后如何更改 HTML 选择的默认值?
- javascript - 反应关闭按钮中的 Bootstrap 3 模态
- java - 你如何编码
进入一个新的班级 - c# - 根据 CheckComboBox 中的选择动态隐藏/显示属性