我参加了一个介绍c ++课程,我有一个由家庭作业分配的问题。赋值要求使用函数验证两个变量(整数)。赋值是拒绝一个无效的变量,这将结束程序。我正在尝试设置一个循环,如果第一个输入无效,它将要求并验证来自用户的新输入。我觉得这样更有意义,因为用户不必再次关闭和打开程序。
这是我遇到障碍的地方:我使用循环获取并验证变量,因此如果第一个变量无效,我可以提示并验证新输入,但它们将是循环的本地。如何将循环中的验证输入传递回主函数?我的变量(" yr1"和" yr2"是全局定义的,我认为这可以解决我的问题)。我认为答案将是一个回复声明,但我也无法做到这一点。 最后,因为我是新手,所以我希望我的代码不是很好。如果您对如何使我的代码更具可读性有任何建议,我很乐意倾听。谢谢你的时间。
以下是代码:
void getDate ()
{
// Get the starting year
cout << "Please enter the starting year" << endl;
cin >> yr1;
rangeCheck (yr1);
// Get the ending year
cout << "Please enter the ending year" << endl;
cin >> yr2;
rangeCheck (yr2);
if (yr1 > yr2)
{
cout << yr1 << "-" << yr2 << " Invalid range error. Please try again." << endl;
getDate();
}
else if (yr1 == yr2)
{
cout << yr1 << "-" << yr2 << " These years match. Please try again." << endl;
getDate();
}
}
P.S。 rangeCheck()是一个验证变量验证的函数。确保数字在1900到2099之间,即yr2> yr1,他们不一样。该程序的其余部分运行闰年计算,以确定在输入范围内有多少闰年下降。
对不起帖子的长度。
编辑:这是主要的
#include <iostream>
using namespace std;
//Function declarations
void rangeCheck ();
void getDate();
void leapCalc(int);
//Variable declarations
int yr1;
int yr2;
int years = 0;
int leap;
//int leap; //<< " " << leap
//Main
int main()
{
cout << "Please enter any two (2) years between 1900" << endl;
cout << "and 2099 and this program will determine" << endl;
cout << "how many leap years fall between them." << endl;
cout << endl;
getDate();
for (int leap = yr1 ; leap < yr2; )
{
leapCalc(leap);
leap++;
}
cout << yr1 << " " << yr2 << " " << years << endl;
return 0;
}
这是rangeCheck功能
void rangeCheck (int day)
{
for ( ;day ;)
{
if (day < 1900 || day >2099)
{
cout << day << " is an invalid entry. Please try again." << endl;
getDate();
}
else
{
return;
}
}
}
答案 0 :(得分:0)
好的,我认为你的循环不在函数之内?
我进一步假设rangeCheck设置了一个全局,如isValid
。
因此,如果您的第一个数字无效,那么全局将为false,但是第二个数字有效,那么将isValid
设置为true,因此即使输入无效,也不会注意到。如果rangeCheck
有效或无效,您应该def opponent_fun(board):
random.seed()
opponent = random.randint(0, 8)
if board[opponent] != 'o' and board[opponent] != 'x':
board[opponent] = 'o'
return board
else:
return opponent_fun(board)
返回true或false。
您还需要getDate返回一个布尔值,以便您知道各个响应是否有效。