C++ 将文本文件放入数组C++;
我有一个像这样的data.txt文件C++ 将文本文件放入数组C++;,c++,C++,我有一个像这样的data.txt文件 1 9 2 5 3 4 4 3 5 2 6 1 现在我想把它放到我的数组中,它是关于障碍物的 我想把价值观作为我的障碍 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 1 2 3 3 3 3 3 3 3 2 1 1 2 3 4 4 4 4 4 3 2 1 1 2 3 4 5 5 5 4 3 2 1 1 2 3 4 5 9 5 4 3 2 1 1 2 3 4 5 5 5 4 3 2 1 1 2 3 4 4
1 9
2 5
3 4
4 3
5 2
6 1
现在我想把它放到我的数组中,它是关于障碍物的
我想把价值观作为我的障碍
1 1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 3 3 2 1
1 2 3 4 4 4 4 4 3 2 1
1 2 3 4 5 5 5 4 3 2 1
1 2 3 4 5 9 5 4 3 2 1
1 2 3 4 5 5 5 4 3 2 1
1 2 3 4 4 4 4 4 3 2 1
1 2 3 3 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1 1 1
像这样。如何做到这一点
我对SSCE很不满意。但我上传了我的代码让你了解要点
int main()
{
int i,j,x,y,x1,y1;
for(i=0; i < 12; ++i)
for(j=0; j < 12; ++j) RES[i][j]=0; // way
RES[1][5]=3; // start
RES[10][5]=5; // goal
RES[3][4]=RES[3][5]=RES[3][6]=2; // block
x=1;
y=5;
for(i=0; i < 12; ++i)
for(j=0; j < 12; ++j) R[i][j]=254; // walkable
R[1][5]=253; // start
R[10][5]=0; // finish
R[3][4]=R[3][5]=R[3][6]=255; // pathless, bunker
for(j=0; j < 12; ++j) R[0][j] =255;
for(j=0; j < 12; ++j) R[11][j]=255;
for(i=0; i < 12; ++i) R[i][0] =255;
for(i=0; i < 12; ++i) R[i][11]=255;
ofstream RRR;
RRR.open("OutWalk.txt", ios::out | ios::app);
if(!RRR) RRR.open("OutWalk.txt", ios::out);
for(N=0; N < Nmax; ++N)
{
cout<<" N = " << N << endl;
for(i=1; i < 11; ++i)
for(j=1; j < 11; ++j)
{
if(R[i][j] == N)
{
if(R[i+1][j] == 253)
{
x=i+1; // start
y=j;
goto PATH;
}
if(R[i+1][j] == 254) R[i+1][j]=N+1;
if(R[i-1][j] == 253)
{
x=i-1; // start
y=j;
goto PATH;
}
if(R[i-1][j] == 254) R[i-1][j]=N+1;
if(R[i][j+1] == 253)
{
x=i; // start
y=j+1;
goto PATH;
}
if(R[i][j+1] == 254) R[i][j+1]=N+1;
if(R[i][j-1] == 253)
{
x=i;
y=j-1;
goto PATH;
}
if(R[i][j-1] == 254) R[i][j-1]=N+1; // start
};
}; // R[12][12]
}; // N
PATH:
if(R[x+1][y] > R[x-1][y])
{
x1=x-1;
y1=y;
}
else
{
x1=x+1;
y1=y;
}
if(R[x1][y1] > R[x][y+1])
{
x1=x;
y1=y+1;
}
if(R[x1][y1] > R[x][y-1])
{
x1=x;
y1=y-1;
}
RES[x1][y1]=1;
if(R[x1][y1] == 0)
{
RES[x1][y1]=5;
goto END;
}
x=x1;
y=y1;
goto PATH;
END:
cout << " N = " << N << endl;
RRR << endl;
RRR << endl;
RRR << " Number of circuit = " << N << " Goal: x = "<< x1 << " y = "<< y1 << endl;
for(i=10; i > 0; i--)
{
RRR << endl;
for(j=1; j < 11; ++j) RRR << R[i][j] << " \t ";
}
RRR << endl;
for(i=10; i > 0; i--)
{
RRR << endl;
for(j=1; j < 11; ++j) RRR << RES[i][j] << " ";
}
return 0;
}
intmain()
{
int i,j,x,y,x1,y1;
对于(i=0;i<12;++i)
对于(j=0;j<12;++j)RES[i][j]=0;//路
RES[1][5]=3;//开始
RES[10][5]=5;//目标
RES[3][4]=RES[3][5]=RES[3][6]=2;//块
x=1;
y=5;
对于(i=0;i<12;++i)
对于(j=0;j<12;++j)R[i][j]=254;//可行走
R[1][5]=253;//开始
R[10][5]=0;//完成
R[3][4]=R[3][5]=R[3][6]=255;//无路径,存储库
对于(j=0;j<12;++j)R[0][j]=255;
对于(j=0;j<12;++j)R[11][j]=255;
对于(i=0;i<12;++i)R[i][0]=255;
对于(i=0;i<12;++i)R[i][11]=255;
流动RRR;
RRR.open(“OutWalk.txt”,ios::out | ios::app);
如果(!RRR)RRR.open(“OutWalk.txt”,ios::out);
对于(N=0;N cout这里有一个简单的方法,可以从您拥有的数据中生成所需的模式。我将使用数组而不是从文件中读取,但如果您想这样做,应该不难
基本上,诀窍是查看输出中每个位置的每个项的索引。如果不输出所需的实际值,而是查看数组中值的索引,则如下所示:
5 5 5 5 5 5 5 5 5 5 5
5 4 4 4 4 4 4 4 4 4 5
5 4 3 3 3 3 3 3 3 4 5
5 4 3 2 2 2 2 2 3 4 5
5 4 3 2 1 1 1 2 3 4 5
5 4 3 2 1 0 1 2 3 4 5
5 4 3 2 1 1 1 2 3 4 5
5 4 3 2 2 2 2 2 3 4 5
5 4 3 3 3 3 3 3 3 4 5
5 4 4 4 4 4 4 4 4 4 5
5 5 5 5 5 5 5 5 5 5 5
<0,0> <1,0> <2,0> <3,0> <4,0> ... etc.
<0,1> <1,1> <2,1> <3,1> <4,1> ... etc.
<0,2> <1,2> <2,2> <3,2> <4,2> ... etc.
<0,3> <1,3> <2,3> <3,3> <4,3> ... etc.
... etc.
现在,想想每个位置的坐标是什么。如果我们把它写成坐标,它看起来是这样的:
5 5 5 5 5 5 5 5 5 5 5
5 4 4 4 4 4 4 4 4 4 5
5 4 3 3 3 3 3 3 3 4 5
5 4 3 2 2 2 2 2 3 4 5
5 4 3 2 1 1 1 2 3 4 5
5 4 3 2 1 0 1 2 3 4 5
5 4 3 2 1 1 1 2 3 4 5
5 4 3 2 2 2 2 2 3 4 5
5 4 3 3 3 3 3 3 3 4 5
5 4 4 4 4 4 4 4 4 4 5
5 5 5 5 5 5 5 5 5 5 5
<0,0> <1,0> <2,0> <3,0> <4,0> ... etc.
<0,1> <1,1> <2,1> <3,1> <4,1> ... etc.
<0,2> <1,2> <2,2> <3,2> <4,2> ... etc.
<0,3> <1,3> <2,3> <3,3> <4,3> ... etc.
... etc.
到目前为止你都尝试了什么?你被困在哪一部分?我的任务是为最短路径创建障碍,并将路径显示为二进制文件并打印到txt文件。我可以做到这一点,但我有一个上面给出的数据文件,这是我的障碍。我不知道如何像第二个矩阵一样将其放置在障碍的位置。任何类型的帮助都非常有用。如果你你需要代码来理解我可以上传它。你应该在问题中发布一个。非常感谢。这很有帮助。你好,user1118321,我有一个问题。如果数组中有5个任意元素,那么我应该如何更改此代码以获得相同的模式。谢谢。我不确定我是否理解这个问题。你能澄清一下吗?数组中的任何元素都可以确定挖掘生成的模式。因此,如果有{1,3,16,27,4},则将这些值分布到代码生成的同心正方形中。(如果有两位数的值,则可能需要更改格式。)或者你的意思是什么?我已经把它清除了。但是正如你在上面看到的,在我的bunker代码中,我必须输入你发送的这个算法。现在我在代码中实现它时遇到了困难。