gpt4 book ai didi

c - 从文本文件到二维整数数组的读取和处理,中间有语句

转载 作者:行者123 更新时间:2023-11-30 17:27:45 25 4
gpt4 key购买 nike

我正在使用广度优先搜索制作迷宫求解器。考虑文本文件中的以下数字列表

10 20
1 1
10 20
5 1
4 2
3 3
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3

其中第一行表示迷宫的大小(10x20),第二行表示起始位置坐标(1x1),第三行表示结束位置(10x20)。第三行之后的每一行代表迷宫中的 block 所在的坐标(也称为必须围绕它移动)。

这个特定的面板如下所示:

**********************
*s........*..........*
*........*...........*
*..*....*............*
*.*....*.............*
**....*..............*
*....*...............*
*...*................*
*..*.................*
*....................*
*...................e*
**********************

我正在尝试做的事情:如果我的文本文件具有不可能的大小坐标或开始/结束坐标,请忽略这些坐标并继续处理输入。

示例:

10 0 => Invalid: Maze sizes must be greater than 0
15 7 => Maze becomes size 15 x 7
10 20 => Invalid: column 20 is outside range from 1 to 7
5 1 => Starting position is at position 5, 1
24 2 => Invalid: row 24 is outside of range from 1 to 15
3 3 => Ending position is at position 3, 3
1 10 => Invalid: column 10 is outside range from 1 to 7
2 9 => Invalid: column 9 is outside range from 1 to 7
3 8 => Invalid: column 8 is outside range from 1 to 7
4 7
5 6
5 1 => Invalid: attempting to block starting position
6 5
7 4
8 3

我知道我应该使用一些 fprintf 或 fscanf 循环,直到到达文件末尾。有人能让我朝着正确的方向开始吗?

如果需要,我想打印文件中的所有坐标,并在行中进一步显示错误消息。

最佳答案

您想问的问题是如何读取所有点?如果是这样,您可以执行以下操作:

int n1, n2;
FILE * fp = fopen("myfile.txt", "r");

//...read first three lines and do what you need with them

//read rest of points
while( fscanf(fp, "%d %d", &n1, &n2) ) {
if (checkPoints(n1,n2)) // check points are valid
addPointsToBoard(n1,n2); // add to board
}

如果您询问如何实现诸如 checkPoints 之类的内容,我会说您没有提供足够的信息来说明您计划如何实现代码以供他人帮助

注意:这假设您有一个格式良好的输入文件。如果您担心无效输入,则需要进行健全性检查

编辑根据此处的评论,您可以对矩阵大小输入(第一行)进行健全性检查

int valid_size = 0;
while(1) {
if ( fsanf(fp, "%d %d", &n1, &n2) )
valid_size = checkMatrixSizes(n1,n2);
else
exit(1); //never finding valid matrix size in file
if (valid_size)
break
}

上面的循环将不断循环,直到 checkMatrixSizes 找到有效的尺寸(我也怀疑它会创建你的板等。上面是伪代码,远未完成)。您可以对第二个和第三个输入执行类似的循环。应该注意的是,这段代码只是忽略任何无效输入并继续,我认为这是根据您的问题您想要的行为。其他行为可能包括将输入调整为最接近的可接受值(即,如果列超出范围,则将列设置为可能的最高值)。

关于c - 从文本文件到二维整数数组的读取和处理,中间有语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26285922/

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