gpt4 book ai didi

c++ - 功能仍然失败,不确定为什么...运行测试用例的想法?

转载 作者:行者123 更新时间:2023-11-30 04:39:07 24 4
gpt4 key购买 nike

我一直在尝试让这个数独游戏正常运行,但我仍然无法使用某些单独的功能。整个游戏都可以运行,但是当我通过“autograder”运行它时,一些测试用例失败了。目前我被困在以下函数 placeValue 上,失败了。我确实有我得到的输出与正确的应该是什么,但我很困惑..发生了什么事?

编辑:我不知道他们对该函数进行了哪些输入/调用。

每次 placeValue 调用后都会输出“无效行”,我无法追查原因..

这是输出(我的 + 正确的)如果它有帮助的话:http://pastebin.com/Wd3P3nDA

这里是placeValue,下面是placeValue调用的getCoords..

void placeValue(Square board[BOARD_SIZE][BOARD_SIZE])
{
int x,y,value;

if(getCoords(x,y))
{

cin>>value;

if(board[x][y].permanent)
{
cout<< endl << "That location cannot be changed";

}
else if(!(value>=1 && value<=9))
{
cout << "Invalid number"<< endl;
clearInput();
}
else if(validMove(board, x, y, value))
{
board[x][y].number=value;
}
}
}


bool getCoords(int & x, int & y)
{
char row;
y=0;

cin>>row>>y;
x = static_cast<int>(toupper(row));
if (isalpha(row) && (x >= 'A' && x <= 'I') && y >= 1 && y <= 9)
{
x = x - 'A'; // converts x from a letter to corresponding index in matrix
y = y - 1; // converts y to corresponding index in matrix
return (true);
}
else if (!(x >= 'A' && x <= 'I'))
{
cout<<"Invalid row"<<endl;

clearInput();
return false;
}
else
{
cout<<"Invalid column"<<endl;
clearInput();
return false;
}

}

最佳答案

(复制我对原帖的评论)像这样盲目工作是没有意义的。评分器向您显示程序的输出,对吗?所以只需将 stdin 回显到 stdout,然后将其粘贴到此处,以便我们可以看到您应该处理的内容:string s; while (getline(cin, s)) cout<<s<<endl;

同时:

你的 clearInput()如果存在解析错误,函数只是读取并忽略直到行尾;如果那是他们这样做的方式,那么使用 getline() 会容易得多读取一行然后解析它。

只是为了好玩,这里有一个更强大的 getCoords 版本功能:

bool getCoords(int& x, int& y, int& value)
{
string s;
getline(cin, s);
istringstream ss(s);
char a, b, c;
ss >> a >> b >> c >> ws;
if (ss.fail() || !ss.eof()) return false;
a = toupper(a);
if (a < 'A' || a > 'I') return false;
x = a - 'A';
if (b < '1' || b > '9') return false;
y = b - '1';
if (c < '1' || c > '9') return false;
value = c - '1';
return true;
}
  1. 它一次读入一行,所以你不需要使用愚蠢的clearInput()了。
  2. 它读了三个字符,而且只有三个;多一点或少一点,它都会跳过这行并返回 false;任何尝试阅读的问题都会返回 false。 (不确定你是否应该这样做,但如果你只想要完美的线条,这是可行的方法)。
  3. 它在返回 true 之前执行所有范围验证,因此您的外部函数无需担心它。

只需更换您的 getCoords(x,y)getCoords(x, y, value) 打电话, 然后取出 cin>>value;行。

关于c++ - 功能仍然失败,不确定为什么...运行测试用例的想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2586662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com