Вот функция отображения для 2d массива:
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>
, как вы его включили). Чем вы можете напечатать любой NXM массив:
#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
Обратите внимание, что вы можете изменить т в любой массив NXM, как :
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