在彼此旁边打印2个阵列

时间:2016-04-05 04:18:06

标签: c++ arrays multidimensional-array

在下面的代码中我有2个数组,1个包含3个名字,另一个是包含21个数字的2维数组

我想知道如何打印两个彼此相邻的阵列,而不是一个在顶部,一个在下面。使用下面显示的代码,我的输出如下:

name1
name2
name3

37 37 63 38 27 56 55
37 54 78 31 26 67 44
86 11 23 6  90 87 33

我希望它显示为

name1   37 37 63 38 27 56 55
name2   37 54 78 31 26 67 44
name3   86 11 23 6  90 87 33

这是我用来显示数组的函数

void printArrays(const int array1[][NUM_DAYS], const string array2[])
{
cout << "Name  \t\t\t Day 1\t Day 2\t Day 3\t Day 4 \t Day 5\t Day 6\t Day 7" << endl;
for (int i = 0; i < NUM_MONKEYS; i++)
{
    cout << array2[i] << endl;
}
cout << endl;

for (int row = 0; row < NUM_MONKEYS; row++)
{

    for (int col = 0; col < NUM_DAYS; col++)
    {
        cout << array1[row][col] << " ";

    }
    cout << endl;
}

3 个答案:

答案 0 :(得分:1)

您正在开始一个新的循环来迭代数组。您只需要迭代与第一个数组相同的行索引。检查代码:

void printArrays(const int array1[][NUM_DAYS], const string array2[])
{
     cout << "Name  \t\t\t Day 1\t Day 2\t Day 3\t Day 4 \t Day 5\t Day 6\t Day 7" << endl;
     for (int i = 0; i < NUM_MONKEYS; i++)
     {
         cout << array2[i] << "  ";    

    for (int col = 0; col < NUM_DAYS; col++)
    {
    cout << array1[i][col] << " ";
    }
    cout << endl;
    }

 }

答案 1 :(得分:0)

为什么不直接宣布三个std::vector并用它的名字打印出来?

void print(const vector<int>& vec, const string& name)
{
    cout << name << "\t";
    for (const auto& i : vec)
        cout << i << " ";

    cout << '\n';
}

int main()
{
    vector<int> name1 { 37, 37, 63, 38, 27, 56, 55 };
    vector<int> name2 { 37, 54, 78, 31, 26, 67, 44 };
    vector<int> name3 { 86, 11, 23, 6, 90, 87, 33 };

    print(name1, "name1");
    print(name2, "name2");
    print(name3, "name3");
}

输出:

name1   37 37 63 38 27 56 55 
name2   37 54 78 31 26 67 44 
name3   86 11 23 6 90 87 33

答案 2 :(得分:0)

使用C ++ 11基于范围的for循环可以简化您的解决方案。

#include <iostream>
#include <vector>

int main()
{
    std::vector<char*> m_Str{"name1", "name2", "name3"};
    std::vector<std::vector<int>> m_Array{ { 37, 37, 63, 38, 27, 56, 55 },
                                           { 37, 54, 78, 31, 26, 67, 44 }, 
                                           { 86, 11, 23,  6, 90, 87, 33 } };

    for(const auto& str : m_Str)
    {
        static auto i = 0;
        std::cout << str << '\t';
        for(const auto& ele : m_Array[i])
        {
            std::cout << ele << ' ';
        }
        std::cout << std::endl;
        i++;
    }
}