2016-11-16 81 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