0

ここで2D配列を印刷していますが、このように印刷するようにフォーマットしたいと思います。

[1 2 3
 4 5 6
 7 8 9]

私の問題は角かっこを印刷することです。

   cout<< "[";
    for(int i = 0; i<numrows(); i++)
    {
        for(int j = 0; j < numcols(); j++)
            cout << GetData(i,j) << " ";

        cout << endl;
    }
    cout << "]" <<endl;

しかし、それはこのように印刷されます。

[1 2 3
 4 5 6
 7 8 9
 ]

それを印刷する最後のものかどうかを示すifステートメントを作成する必要がありますか?これには良いアプローチです。たぶん私はとても眠い私を盲目にします。

4

4 に答える 4

2

次の行がある場合にのみ、改行を印刷します。

if (i != numrows() - 1) { cout << endl; }
于 2013-02-14T04:25:49.917 に答える
2

endl最後の行は出力しないでください。

cout<< "[";
for(int i = 0; i<numrows(); i++)
{
    for(int j = 0; j < numcols(); j++)
    {
        cout << GetData(i,j);
        if (j < numcols() -1)
        {
            cout << " ";
        }
    }

    if (i < numrows() -1)
    {
        cout << endl;
    }
}
cout << "]" <<endl;
于 2013-02-14T04:26:06.930 に答える
1

これを試して:

    cout << "[";
      for (int nRow = 0; nRow < 3; nRow++){
        for (int nCol = 0; nCol < 3; nCol++)
        {
            if(nRow!=0)
            cout <<" "<<GetData(i,j) <<" ";
            else
            cout<<GetData(i,j) <<"  ";
        }
        if(nRow!=2)
        cout<<endl;
    }

cout << "\b]" <<endl;  // backspacing so that there is no space b/w 9 and ]
于 2013-02-14T04:35:45.863 に答える
0

これを試して。
出力
| 1 2 3 |
| 3 4 5 |
| 3 4 2 |
| 2 3 1 |

int main()
{
    int arr[4][3];
    for(int i=0; i<4; i++)
    {
        for(int j=0; j<3; j++)
        {
            cout<<"Enter Value:";
            cin>>arr[i][j];
        }
    }

    cout<<"The Values you entered are..."<<endl<<endl<<endl;
    cout<<"|  ";
    for(int i=0; i<4; i++)
    {
        for(int j=0; j<3; j++)
        {
            cout<<arr[i][j]<<"  ";
        }
        cout<<"|";
        cout<<endl<<"|  ";
    }
    cout<<"\b\b\b\b ";
    getch();
}
于 2014-02-07T12:44:20.167 に答える