他们是否有办法缩短做和做声明?

时间:2017-02-13 17:28:27

标签: visual-c++

感谢您抽出时间阅读我的问题。我只是想知道,无论如何要缩短它;

int nextValue;
int PreValue;
Do               // I wanna shorten this up without looping it.
{
 cout << "please put something that is greater than the previous value:";
 cin >> nextValue
 }
 while ( nextValue < preValue);
抱歉这个noob问题,还在努力学习c ++

1 个答案:

答案 0 :(得分:0)

是的,但不是很多。你的解决方案是8行代码(开始时相当小),甚至可以根据偏好将代码实际压缩为5行......

int nextValue, preValue;
do { 
   cout << "please put something that is greater than the previous value:";
   cin >> nextValue;
} while ( nextValue < preValue);

但是,我认为你可以在你的例子中使用常规的while循环。 preValue需要初始化,以便您的比较可以为您提供可靠的结果。它现在的方式,preValue可能是-454234,7654,1,0 ......我们不知道它是什么;它尚未初始化。初始化它,然后使用常规while循环。通过初始化,我的意思是明确地为其分配值

int nextValue = 0, preValue = INT_MIN;
while (preValue < nextValue){ 
   cout << "please put something that is greater than the previous value:";
   cin >> nextValue;
}

如果你想在不使用循环的情况下获取值,另一种方法是定义一个函数并递归调用它。

int getValue(int minValue){
    int input;
    std::cout << "please put something that is greater than the previous value:";
    std::cin >> input;

    input > minValue ? return input: return getValue(minValue);
}

value = getValue(preValue);

缩短解决方案绝对是可能的(您可以在技术上将其全部放在一行),但尝试使代码可读并且尽可能易于理解总是好的做法。在我的示例中,getValue()将继续调用自身,直到用户输入大于最小值的值。最后,它在代码行方面没有太大的不同,但它会留下哪些功能,促使用户输入更短。

int main(){
    //other statements here. 

    int nextValue;
    int PreValue;
    Do               // I wanna shorten this up without looping it.
    {
    cout << "please put something that is greater than the previous value:";
    cin >> nextValue
    }
    while ( nextValue < preValue);

    //more statements here.
}

...变为

int main(){
    int minValue = 10; 
    //other statements.

    int value = getValue(minValue);
    //more statements
}

显然,递归解决方案的代码比第一个示例中的5行更多,但优势在于它现在处于自己的功能中。如果您需要向用户提示5次不同的时间,则只需要编写int value = getValue(min); 5次而不是整个循环5次。