键盘损坏,因此输入数字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;
}
}
最佳答案
由于这看起来像作业,因此我将避免为您做这件事,并为您提供以下提示:
您似乎不太清楚“第一个数字”是什么。它是左边第一个(数百个)还是右边第一个(一个)?查看您的代码,并告诉自己代码的每个部分将如何回答我的问题。lowNum
或highNum
是否有可能与您的代码原样地具有与number
不同的一位数字?怎么样? lowNum
和highNum
在哪里更改,以及如何更改?
另外,要进一步扩展@Al Kepp所说的内容:当您具有这样的功能时,请尝试使用一些非常简单的输入进行测试,而不是直接假设它可以正常工作。这称为(或类似于)“单元测试”,它指示您将程序划分为简单,独立的单元并分别进行测试。像containDigit(999, 4)
返回true
这样的简单调用会发出警告声。
说到警告,总是要尽可能多地编写警告。 (例如,-Wall
表示gcc
)可能会警告您,实际上根本没有在number
中使用参数containDigit
。
关于c++ - splinter 的 toastr 键盘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13021918/