打印函数多维数组,当存在2个不同大小的c++

Print Function multi-dimensional Arrays when 2 different sizes exists C++

本文关键字:c++ 2个 存在 函数 数组 打印      更新时间:2023-10-16

我有一个问题,创建一个PRINT函数,我将能够多次运行不同的数组大小。我将使用这个作为示例。

飞机座位表:

2 sections
-First Class
--5 rows 
--2 columns
---2 seats/column
-Coach Class
--5 rows
--2 columns
---3 seats/column

视觉:示例-飞机座位表

问题1:我怎样才能把这个打印出来?

问题2:我如何创建一个函数来多次传递这个?

有问题的代码(从2d角度)

#include <iostream>
#include <iomanip>
using namespace std;
const int COLS = 4;
const int ROW1 = 3, ROW2 = 4;
void showArray(const int [][COLS],int);
int main()
{
int table1 [ROW1][COLS] = {{1,2,3,},{6,7,8,9}};
int table2 [ROW2][COLS] = {{9,8,7,6},{5,4,3,2}};
cout << "Table 1 Array: n" << endl;
showArray(table1,ROW1);
cout << "Table 2 Array: n" << endl;
showArray(table2,ROW2);
return 0;
}
void showArray (const int array[][COLS], int rows)
{
for(int x = 0; x < rows; x++)
{
    for (int y = 0; y < COLS; y++)
    {
        cout << setw(4) << array[x][y] << "  ";
    }
    cout << endl;
}
}

上面的代码是一个例子,如果需要确定行数的#,我需要做什么....正确吗?

现在我知道代码没有给我正确的输出因为它把0放在了空位置我知道这是对y(或COLS)循环4次当x没有第4个值时

关于如何创建一个可以多次使用不同数组大小的函数而不是给我0的任何想法?

在这个特殊的例子中,我可以给"行"赋一个CONST INT值,因为本质上它们是两个数组,每组5个,但是如果我把每个座位算作新列,它们的Y(列)值就会不同。

除非有办法,我可以保持相同的列数(2),并在每列中显示多个座位,无论它们是头等舱还是经济舱。

任何想法都会很棒。我很感谢你们的帮助!

如果这不是你想要的,请告诉我。下面是一个示例,说明如何打印任意大小的多维数组。对于这个例子,我使用std::vector作为容器。请注意,这是c++ 11,它不能在c++ 98中编译(如果你想用c++ 98编译器编译这段代码,你需要使用迭代器而不是基于范围的for循环)

#include <iostream>
#include <vector>
void show(const std::vector<std::vector<int>>& matrix)
{
    for(auto& vector : matrix) {
        for(auto& element : vector) {
            std::cout << element << " ";
        }
        std::cout << std::endl;
    }
}
int main()
{
    std::vector<std::vector<int>> matrix1;
    matrix1.push_back({1,2,3});
    matrix1.push_back({4,5,6});
    matrix1.push_back({7,8,9});
    std::vector<std::vector<int>> matrix2;
    matrix2.push_back({1,2,3,4,5});
    matrix2.push_back({6,7,8,9,10});
    std::cout << "Matrix1: " << std::endl;
    show(matrix1);
    std::cout << "Matrix2: " << std::endl;
    show(matrix2);
}