我在创建PRINT函数时遇到问题,我可以使用不同的数组大小运行多次。我将以此为例。
飞机座位表:
2 sections
-First Class
--5 rows
--2 columns
---2 seats/column
-Coach Class
--5 rows
--2 columns
---3 seats/column
VISUAL: Example - Plane seating chart
问题1:我怎样才能打印出来?
问题2:如何创建一个函数来多次传递它?
有问题的代码(从第2个角度来看)
#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,我知道当没有&#39;时,我会知道y(或COLS)循环4次。列出的x第4个值
关于如何创建一个可以多次使用不同数组大小的函数的任何想法,而不是给我0?
在这种特殊情况下,我可以将CONST INT指定给&#34; Rows&#34;因为基本上它们是5个5的数组,但是如果我将每个座位都计为新列,它们将具有不同的Y(列)值。
除非有办法,我可以保持相同的列数(2)并在每列中显示多个席位,无论他们是头等舱还是教练舱。
任何想法都会很棒。我感谢你们的帮助!
答案 0 :(得分:3)
如果这不是您要求的,请告诉我。下面是一个如何打印任意大小的多维数组的示例。对于此示例,我使用std::vector
作为容器。请注意,这是C ++ 11,它不能用C ++ 98编译(如果你想用C ++ 98编译器编译这个代码,你需要使用迭代器而不是基于范围的循环)
#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);
}