2017-10-07 9 views
0

J'ai un problème très stupide qui me rend fou.C++ Vecteur de vecteurs. Array est tourné à 90 degrés

Entrée:

0 3 0 
0 3 0 
0 3 0 

code:

vector <vector <int>> lab; 
int W; // number of columns. 
int H; // number of rows. 
cin >> W >> H; cin.ignore(); 
for (int i = 0; i < H; i++) { 
    string LINE; 
    getline(cin, LINE); 
    vector <int> row; 
    for (int j=0;j<LINE.length();j++){ 
     if (LINE[j]!=' '){ 
      row.push_back(LINE[j]-'0'); 
     } 
    } 
    lab.push_back(row); 
} 

Mais ce que je reçois est:

0 0 0 
3 3 3 
0 0 0 

que quelqu'un peut me expliquer pourquoi il heapens?

+0

Montrez votre code d'impression. – konserw

Répondre

0

Vous devriez utiliser vos options de saisie formatées, et dans le cas d'entrées fixes, croyez-les simplement.

typedef int Matrix_Element; 
typedef std::vector <Matrix_Element> Matrix_Row; 
typedef std::vector <Matrix_Row> Matrix; 

Matrix m; 
unsigned rows, cols; 

std::cin >> rows >> cols; 
for (unsigned r = 0; r < rows; r++) 
{ 
    MatrixRow row; 
    for (unsigned c = 0; c < cols; c++) 
    { 
    MatrixNumber n; 
    std::cin >> n; 
    row.emplace_back(n); 
    } 
    m.emplace_back(row); 
} 

Si vous souhaitez imprimer votre matrice, utilisez également l'ordre des lignes → colonne:

for (auto row : m) 
{ 
    for (auto n : row) 
    std::cout << n << " "; 
    std::cout << "\n"; 
}