键盘损坏,因此输入数字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;
    }
}

最佳答案

由于这看起来像作业,因此我将避免为您做这件事,并为您提供以下提示:

您似乎不太清楚“第一个数字”是什么。它是左边第一个(数百个)还是右边第一个(一个)?查看您的代码,并告诉自己代码的每个部分将如何回答我的问题。

lowNumhighNum是否有可能与您的代码原样地具有与number不同的一位数字?怎么样? lowNumhighNum在哪里更改,以及如何更改?

另外,要进一步扩展@Al Kepp所说的内容:当您具有这样的功能时,请尝试使用一些非常简单的输入进行测试,而不是直接假设它可以正常工作。这称为(或类似于)“单元测试”,它指示您将程序划分为简单,独立的单元并分别进行测试。像containDigit(999, 4)返回true这样的简单调用会发出警告声。

说到警告,总是要尽可能多地编写警告。 (例如,-Wall表示gcc)可能会警告您,实际上根本没有在number中使用参数containDigit

关于c++ - splinter 的 toastr 键盘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13021918/

10-16 05:08