破碎的烤箱键盘

时间:2012-10-23 00:21:51

标签: c++

  

键盘坏了,因此输入的数字1,4和7不起作用。反过来,计算机输出下一个最低和下一个最高的数字,其中1,4和7都不是数字。

我的目标是检查数字并使用布尔函数输出true,然后输出下一个最高数字和下一个最低数字。我很确定我做了大部分我需要做的事情,但它没有成功。 我输入了444号,结果是443和445。 谢谢你的帮助。

 #include <iostream>
 #include <conio.h>
 #include <cmath>

using namespace std;

bool containDigit(int number, int digit);

int main()
{
    int number, digit, lowNum, highNum;

cout<<"Enter a number between 1 and 999 for the oven temperature: ";
cin>>number;

//1st digit
digit = number / 100;
containDigit(number, digit);
if (containDigit(number, digit) == true)
{
    number = number - 100;
}

//2nd digit
digit = (number / 10) % 10;
containDigit(number, digit);
if (containDigit(number, digit) == true)
{
    number = number - 10;
}

//3rd Digit
digit = number % 10;
containDigit(number, digit);
if (containDigit(number, digit) == true)
{
    number = number - 1;
}

cout<<number<<endl;


getche();
return 0;

}

bool containDigit(int number, int digit)
{
    if ((digit == 1) || (digit == 4) || (digit == 7))
    {
        return true;
    }
    else
    {
        return 0;
    }
}

3 个答案:

答案 0 :(得分:1)

该错误在containsDigit函数中。试试这个:

bool containDigit(int number, int digit) {
    if(digit == 1 || digit == 4 || digit == 7) return true;
    return false;
}

您必须使用==代替=。 此外,你实际上不需要number参数。

此外,还可以进行多项优化。请亲自看看(这是你的作业)并考虑重复的代码。

答案 1 :(得分:0)

由于这看起来像是家庭作业,我将不再为你做这件事,并给你这些提示:

看起来你并不清楚“第一位数”是什么。它是左边的第一个(数百个)还是右边的(个)?看看你的代码并告诉自己它的每一部分将如何回答我的问题。

lowNumhighNum是否有可能与您的代码具有不同于number的数字?怎么样? lowNumhighNum在哪里发生变化,以及如何变更?

另外,要扩展@Al Kepp所说的内容:当你有这样的功能时,尝试使用一些非常简单的输入进行测试,而不是直接假设它有效。这被称为(或类似于)“单元测试”,它要求您将程序划分为简单,独立的单元并单独测试它们。像containDigit(999, 4)返回true这样的简单调用就会响起警告。

说到警告,总是始终使用尽可能多的人来编译。 (例如-Wall gcc}这样做可能会警告您,您根本没有在number内使用参数containDigit

答案 2 :(得分:0)

您的函数containsDigit有两个问题:

  1. 它不应该接收变量“number”,因为它不使用它
  2. 您想与== not =
  3. 进行比较