2016-09-09 4 views
0

9つの値を計算し、それらを3x3行列に格納するためのプログラムを作成するクラスを割り当てました。しかし、先生は、マトリックス内のオブジェクトを整列させるためにタブを使用しないことを強調しました。マトリックスのフィールドの様相をどのように変更しますか?

[0.0000, 0.9211, -0.3894, 
0.0000, 0.0000, 0.0000, 
0.0000, 0.0000, 0.0000] 

(最初の[行の先頭にあるべきである)、印刷の各フィールドについては

」、フィールド幅があるべき8(Iドン:

行列は次のようになりことになっています彼がこれによって何を意味するかを理解していない)、出力は固定マニピュレータを使用する必要があります。命令だった。

先生はまだ配列を渡さなかったので、私はちょうどcoutを使うことになっていると仮定していますが、間隔を置いてここでどのくらい正確に動作させるのですか?私はちょうど約8スペースを入れて< < "ここに8つのスペースを挿入" < < "0.0000"または?

+3

はここを見て.cppreference.com/w/cpp/io/ios_base/setf。あなたの 'cout'は単なる出力ストリームです。これらはそれらのフォーマット修飾子です。 – Hayt

答えて

1

あなたが示した例では、幅8のフィールドに浮動小数点数が含まれています - 各数字は正確に8文字です(最初の文字は常にスペースで、2番目の文字はスペースまたはマイナス記号)。

例外は、最初の列は幅6の分野であるように見えるということであり、あなたがゼロ未満以上、等しい数を印刷する場合、アライメントが壊れる10

マニピュレータができるオブジェクトであります(coutのような)ストリームに出力し、そのストリームのフォーマットを変更します。 fixedマニピュレータの詳細について

、以下を参照してください

をあなたはおそらくあまりにもsetwマニピュレータを使用する必要があります:

+0

それは私が必要とした2つの特定のものでした!それを把握するために管理されています。 cout <<固定<< setprecision(4)<< setw(8)<< setfill( '')など。ありがとう! –

0

ナイーブ溶液(しかし秒で書かれた):

使用setw()から

#include <iostream> 
#include <iomanip> 
using namespace std; 

#define MTXDIM 3 

float mtx[MTXDIM][MTXDIM]= 
    { 
     {0.0000, 0.9211, -0.3894}, 
     {0.0000, 0.0000, 0.0000}, 
     {0.0000, 0.0000, 0.0000} 
    }; 

int main() 
{ 
    cout<<"["; 
    for(int i=0;i<MTXDIM;i++) 
    { 
     for(int j=0;j<MTXDIM;j++) 
     { 
      cout << fixed << (!(i+j) ? setw(7) : setw(8)) << right << setprecision(4) << mtx[i][j]; 
      if(i==MTXDIM-1 && j==MTXDIM-1) cout<<"]"; 
      else cout<<","; 
     } 
     cout<<endl; 
    } 

    return 0; 
} 

出力iomanipます。http:// EN

[ 0.0000, 0.9211, -0.3894, 
    0.0000, 0.0000, 0.0000, 
    0.0000, 0.0000, 0.0000] 
関連する問題