2016-11-16 83 views
-2

我想知道如果有人能幫助我,我在下面做了這個簡單的程序來嘗試使用2D數組。我正在使用cout來顯示信息,但我想使用顯示功能,但我不確定如何正確執行此操作。C++二維數組顯示功能

任何幫助,將不勝感激。

(註釋部分只是顯示了COUT輸出,當我運行程序)

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

    int main() 
    { 

     int [3][3] = { {},{},{} }; 

     cout <<" " << " " << "" << " " << "" << endl; 
     cout << " "<< m[0][0] << " " << m[0][1] << " " << m[0][2] << endl; 
     cout << " " << m[1][0] << " " << m[1][1] << " " << m[1][2] << endl; 
     cout << " " << m[2][0] << " " << m[2][1] << " " << m[2][2] << endl; 

    return 0; 
    } 

回答

0
int m[3][3] = { {2,1,8},{5,3,9},{2,0,9} }; 
    display(m); 

顯示過程:

void display(int m[3][3]) 
{ 
     cout <<" Medal1" << " " << "Medal2" << " " << "Medal3" << endl; 
    for (int i=0 ;i<3;i++){ 
     cout << "Country"<<i+1<<"  "; 
     for (int j=0 ;j<3;j++){ 
    cout<< m[i][j] << " " ; 
    if(j==2) 
     cout<<endl; 
     }} 

} 

希望這有助於。

0

這裏是你的二維數組的顯示功能:

void print_it(const int m[3][3]){ 
    cout << "Medal " << 1 << '\t' << 2 << '\t' << 3 << endl; 
    cout << '\n'; 
    cout << "Country1 " << m[0][0] << '\t' << m[0][1] << '\t' << m[0][2] << << '\n'; 
    cout << "Country2 " << m[1][0] << '\t' << m[1][1] << '\t' << m[1][2] << << '\n'; 
    cout << "Country3 " << m[2][0] << '\t' << m[2][1] << '\t' << m[2][2] << << '\n'; 

} 

在簡單地這樣稱呼它,你的main():

int main() 
{ 

    int m[3][3] = { { 2, 1, 8 }, { 5, 3, 9 }, { 2, 0, 9 } }; 

    print_it(m); 

    return 0; 
} 

那麼,這不是一個很好的(既不現代的)實現。這當然只適用於大小爲3 x 3的數組(除非你使用指針,傳遞大小......但是這會變得麻煩)。所以,請考慮使用像<vector>(或<array>,因爲你包括它)的現代容器。比你可以打印任何n×m的數組:

#include <vector> 
#include <iostream> 

void print_it(const std::vector<std::vector<int>> &m){ 
    std::cout << "Medal "; 
    for (int i = 0; i < m[0].size(); ++i){ 
     std::cout << i << '\t'; 
    } 

    std::cout << "\n---------------------------------\n"; 

    for (int y = 0; y < m.size(); ++y){ 
     std::cout << "Country" << y + 1 << ' '; 
     for (int x = 0; x < m[0].size(); ++x){ 
      std::cout << m[y][x] << '\t'; 
     } 
     std::cout << '\n'; 
    } 

調用它

int main(){ 
    std::vector<std::vector<int>> m{ { 2, 1, 8 }, { 5, 3, 9 }, { 2, 0, 9 } }; 

    print_it(m); 

    return 0; 
} 

你得到所需的輸出:

Medal 0  1  2 
--------------------------------- 
Country1 2  1  8 
Country2 5  3  9 
Country3 2  0  9 

請注意,您可以更改米到任何n×m的陣列,像:

std::vector<std::vector<int>> m{ { 2, 5 }, { 9, 5 }, { 10, 15 }, { 0, 2 }, { 5, 7 } }; 
print_it(m); 

得到:

Medal 0  1 
--------------------------------- 
Country1 2  5 
Country2 9  5 
Country3 10  15 
Country4 0  2 
Country5 5  7 
0

嘗試像下面

#include <iostream> 
#include <iomanip> 
#include <string> 

using namespace std; 

template <class T, size_t M, size_t N> 
std::ostream & display(const T (&a)[M][N], 
         const std::string &header, 
         const std::string &name, 
         std::ostream &os = std::cout) 
{ 
    os << std::setw(name.size() + header.size() + 3); 

    for (size_t i = 0; i < N; i++) 
    { 
     os << header << std::setw(3) << std::left << i + 1; 
     os << ((i + 1) % N == 0 ? '\n' : ' '); 
    } 

    for (size_t i = 0; i < M; i++) 
    { 
     os << name << std::left << i + 1; 
     for (size_t j = 0; j < N; j++) 
     { 
      os << std::setw(header.size() + 3) << std::right << a[i][j]; 
      os << ((j + 1) % N == 0 ? '\n' : ' '); 

     } 
    } 

    os << std::endl; 

    return os; 
} 

int main() 
{ 
    int m[3][3] = 
    { 
     { 2, 1, 8 }, 
     { 5, 3, 9 }, 
     { 2, 0, 9 } 
    }; 


    display(m, "Medal", "Country"); 

    return 0; 
} 

程序輸出是

  Medal1 Medal2 Medal3 
Country1  2  1  8 
Country2  5  3  9 
Country3  2  0  9