如何结束整个计划

时间:2011-06-19 18:56:53

标签: c++

我有一个非常简单的C ++控制台程序。它工作正常,但我有一些问题。 我有2个功能。第一个被称为“输入”的函数要求用户输入从6到10的数字。在该函数中我声明:

if ((a[i][j] < 6) || (a[i][j] > 10))
{
    cout<<"Invalid input!";
    return 0; 
}

第二个称为“输出”的函数,从第一个函数打印出这些数字。

主要是:

int main ()
{
    ...
    input (matrix, number);
    output (matrix, nubmer);
}

我的问题是这个。当我输入不是6-10的数字时,我的程序仍然执行“输出”功能,因此它会打印一些随机数。当输入规则被破坏时,如何在准确的时间内打破整个程序?没有任何随机输出和东西,只是打印“无效输出”,然后从头开始程序?

6 个答案:

答案 0 :(得分:7)

您可以在致电input()之前检查output()的返回值。 您可以使用exit()函数终止程序

答案 1 :(得分:3)

 if(input(matrix,number) != 0) output(matrix,number); 
 // You don't {} for a single instruction

这可以解决您的问题。

答案 2 :(得分:2)

指示错误的常用方法是抛出异常。

int main() {
    ...
    try {
        input(matrix, number);
        output(matrix, number);
    } catch(std::exception& e) {
        std::cout << "Error: " << e.what();
    }
}

输入:

if ((a[i][j] < 6) || (a[i][j] > 10))
{
    throw std::runtime_error("Invalid input!");
}

答案 3 :(得分:2)

如果输入函数在无效输入时返回0,而另一个值在成功时返回,则可以运行循环直到输入有效

...

while(input(matrix,number) == 0);

...

答案 4 :(得分:2)

惯用代码就是这样:

while(input (matrix, number)) //idiomatic loop
{
    output (matrix, nubmer);
}

当输入无效时input()函数应返回false0,输入有效时应返回true或非零。


上面的循环与我们写std::istream成语的形式相同:

 std::string word;
 while( std::cin >> word ) 
 {
     //..
 }

 //Or

 ifstream file;
 //...
 while( file >> word ) 
 {
     //..
 }

 //Or
 while( std::getline(file, word)) 
 {
     //..
 }

我在这里解释了这个成语,关于它是如何工作的:

答案 5 :(得分:1)

有很多解决方案。一种是声明input函数返回一个整数。成功input可以返回0。失败时(输入超出范围6-10)input返回负数(-1以简化)。在main函数内部,使用while循环继续调用input,直到它返回0表示成功。每次input失败,您都可以打印一条消息,告诉客户再次尝试输入。如果您想在第一次input失败后立即退出,可以在exit(1)内拨打main