C++ 将文本文件放入数组C++;

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

我有一个像这样的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 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;Ncout这里有一个简单的方法,可以从您拥有的数据中生成所需的模式。我将使用数组而不是从文件中读取,但如果您想这样做,应该不难

基本上,诀窍是查看输出中每个位置的每个项的索引。如果不输出所需的实际值,而是查看数组中值的索引,则如下所示:

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代码中,我必须输入你发送的这个算法。现在我在代码中实现它时遇到了困难。