2012-10-23 30 views
0

键盘被打破所以输入数字1,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; 
    } 
} 
+1

你能告诉我们什么错?你面临的具体问题是什么? – Clark

+2

你会想要养成更详细地指定问题的习惯。你怎么知道它不工作?你看到了什么样的结果? –

+0

另外:我很感谢你在指定'家庭作业'标签时的诚实,但[你不必这样做](http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now -officially弃用)。 –

回答

0

因为这看起来像功课,我将这样做是为了避免你,给你这些提示:

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

lowNumhighNum是否有可能有多于一个数字不同于number与您的代码,因为它是?怎么样? lowNumhighNum在哪里变了,怎么样?

此外,扩大什么@Al Kepp说:当你有一个这样的功能,尝试用一些非常简单的输入值来测试它,而不是直接从假设它的工作原理。这称为(或类似于)“单元测试”,它指示您将程序分成简单的独立单元并单独测试。一个简单的电话如​​返回true会响起警钟。

说到警告,始终,总是编译尽可能多的,你可以站立。 (例如,用于gcc-Wall)做这样的可能已经警告过你的,你没有使用参数numbercontainDigit在所有的事实。

+0

第一位数字是最左边的数字,第二位数字是中间数字等。 lowNum和highNum不可能有多于一位的数字,但我找不到问题。我知道这就是阻止我的程序运行的原因,而且我一直在头脑中徘徊。主要功能中的lowNum和highNum通过减少或增加数字来改变。如果我更换了'lowNum = number - 100; \t \t highNum = number + 100;'代码只用'number = number - (10 *(WHATEVER DIGIT PLACE IT'S IN))' – user1742419

+0

我输入444得到333,这是有效的。但是,我似乎无法让它与lowNum和highNum一起工作。 – user1742419

+0

看看“第一位数”部分。它检查哪个数字?它改变了哪个数字? – aib

1

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

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

必须使用==,而不是=。 另外你实际上并不需要number参数。

也有可以做一些优化。请自己看看(这是你的作业),并考虑重复的代码。

+0

还有一个问题,如果条件不正确,函数不会返回值。这意味着_anything_可能会被返回,有时它可能是“真实的”,有时是“错误的”。如果该函数不应该做其他任何事情,我建议改为'return(digit == 1 || digit == 4 || digit == 7);'。 –

+0

J.P.你是对的。纠正。 (我把它放在两行上,因为这样对初学者来说它的可读性更好。) –

+0

我将我的代码更改为 'if((digit == 1)||(digit == 4)||(digit == 7 )) { return true; else { return 0; }' – user1742419

0

你的功能containDigit有两个问题:

  1. 它不应该需要接受变量“数”,因为它不使用它
  2. 你想比较==不是=