【问题标题】:logic error, need help can't figure out the looping logic逻辑错误,需要帮助无法弄清楚循环逻辑
【发布时间】:2016-07-16 11:02:10
【问题描述】:

我是一名初学者,我需要一些关于我的代码如何输出正确语法的想法。

如果我输入数字 0)。 如果不存在四分之一或一角钱它不输出“,”,我将如何做到这一点?

#include <cstdio>
#include <iostream>

using namespace std;

void compute_coins(int coin_value, int& number, int& amount_left);

int main(){
int amount_left, number;

while(amount_left > 1 || amount_left < 99){
    cout << "Enter number of cents (or zero to quit):" << endl;
    cin >> amount_left;
if (amount_left == 0){
  break;
}
else{
  cout << amount_left << " cents can be given as ";
  compute_coins(25, number, amount_left);
  if (number == 1){
    cout << "1 quarter";
  }
  else if (number > 0){
  cout << number << " quarters";
  }
  if (amount_left > 0){
    cout << ", ";
  }

  compute_coins(10, number, amount_left);
  if (number == 1){
    cout << "1 dime";
  }
  else if (number > 1){
    cout << number << " dimes";
  }
  if (amount_left > 0){
    cout << ", ";
  }
  compute_coins(1, number, amount_left);
  if (number == 1){
    cout << "1 penny";
  }
  else if (number > 1){
    cout << number << " pennies";
  }
  std:: cout << ".";
}
cout << endl;
  }
  return 0;
 }
 void compute_coins(int coin_value, int& number, int& amount_left){
   number = amount_left/coin_value;
   amount_left = amount_left - (number * coin_value);
 }

【问题讨论】:

  • amount_left 在检查它们之前为零时,你的代码中会发生什么情况?
  • 我尝试将 amount_left if else 参数放在循环之外。但是我在每个输出的末尾只得到一个句点,如果有一角钱或一分钱,我就没有逗号。
  • 你可以试试。在调试器中单步执行,看看发生了什么。
  • 我仍然找不到我的错误

标签: c++


【解决方案1】:

预期是一个期间,并且在所有金额都打印出来之后必须恰好是一个期间。

因此,编写复杂的代码来试图确定是否应该在其余代码(对于所有剩余的面额)完成之前打印一个句点是没有逻辑意义的。

只要去掉那些打印所有这些句点的代码,在所有那些尴尬的 if/else 语句中。

在所有事情的最后,只需执行

std::cout << ".";

没有ifs、elses 或但是。

只关注写出所有面额的计数问题,用逗号正确分隔。忘记尾随时间。只需专注于格式化所有可能面额的逗号分隔列表。把尾随句号从你的脑海中抹去。

然后,一旦你完成了所有这些工作,只需追加

std::cout << ".";

最后,收工。这是一种 100% 保证或退款的方式,可以在输出结束时恰好有一个周期。

【讨论】:

  • 我的逗号呢?我添加了 std::cout
  • 我没有说生成逗号的代码。这些似乎是正确生成的。生成逗号的现有代码或多或少都很好,不需要更改。
  • 但是,当输入大于 25 或 >10 时,会出现另一个问题,因为即使没有任何 25 美分或 10 美分,它也会在 25 美分和 10 美分之间输出一个“,”。跨度>
猜你喜欢
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多