用于将字符返回到while循环的函数

时间:2013-02-01 17:08:40

标签: c++ function while-loop character

我正在尝试编写一个计算程序,当它运行一次时询问用户是否希望进行另一次计算。它具有单独函数的形式,在主函数的适当位置调用:

char repeatcalc(char y){

    cout << "Would you like to perform another calculation? [Y]es/[N]o" << endl;
    cin >> y;
    if(y == 'Y' || y == 'y'){
        return y == 'y';
    }
    else if(y == 'N' || y == 'n'){
        return y == 'n';
    }
    else{
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        repeatcalc(y);
    }
}

想法是,用户点击一个按钮,该函数返回'y','n'或重复自身。然后返回主函数中的while循环,如果返回'y'则重复,如果返回'n'则结束。

上面函数中的repeat部分在主代码中起作用,'y'返回也是如此,但是当选择'n'时,无论如何它似乎都返回'y'。

我遗漏了一些显而易见的东西,但我无法弄明白什么!有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:0)

转换你的函数以返回一个bool。例如:

 if (y == 'Y' || y == 'y') return true; 
 if (y == 'N' || y == 'n') return false;

...

return repeatcalc() ;

y本地char变量。这样函数不需要参数。你可以问简单的if (repeatcalc() ) reapeat;

此外,请注意:==用于比较并返回bool,而您尝试进行分配:return y='y';在这种情况下只是return 'y';