我正在尝试编写一个计算程序,当它运行一次时询问用户是否希望进行另一次计算。它具有单独函数的形式,在主函数的适当位置调用:
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'。
我遗漏了一些显而易见的东西,但我无法弄明白什么!有什么建议吗?
感谢。
答案 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';