【问题标题】:Battle Naval Assignment, can't allign an array with setw(), could you help me?Battle Naval Assignment,无法将数组与 setw() 对齐,您能帮帮我吗?
【发布时间】:2020-04-17 01:43:52
【问题描述】:

我有一个任务,简而言之,我必须制作一个简单的海战游戏。我以为这很容易,但我被困住了。但现在我被困住了。 我有一个问题,我无法正确显示我的阵列,它没有很好地对齐。如果你能帮助我就太好了

void show(char BATTLEFIELD[columns][rows])
{
    std::string alfa[rows + 1] = { "A|", "B|", "C|", "D|", "E|", "F|", "G|", "H|", "I|", "J|" };

    char num[11] = { ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

    for (int i = 0; i < 11; i++)
    {
        std::cout << std::setw(width) << num[i];
    }

    std::cout << std::endl;
    for (int z = 0; z < (columns*width); z++)
    {
        std::cout << "-";
    }
    std::cout << std::endl;
    for (int i = 0; i < columns; i++)
    {

        for (int z = 0; z < rows; z++)
        {
            if (z == 0)
            {
                std::cout << alfa[i];
            }
            std::cout << std::setw(width) << veld[i][z];
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
}

我会放两张预期和意外结果的图片。

预期结果:

意外的结果:

【问题讨论】:

  • 嗨。您希望看到什么以及实际展示了什么?
  • 嘿,谢谢你的提示,我已经放了两张(未)预期结果的图片。
  • 换句话说,你的问题是对齐列号和它下面的破折号线?在生成行之前只需计算一两个额外的空间? (游戏通常称为Battleships。)您还可以生成列标题和行标题:您不需要将它们存储为字符串。
  • 您是否要在列底部打印“Waag uw kans:”?如果是这样,创建一个 char 数组并将每个字符分配给最后一列的每一行。

标签: c++ multidimensional-array setw


【解决方案1】:

假设这些声明

constexpr int rows{10};
constexpr int columns{10};
constexpr int width{3};

结果之间的视觉差异是由几个问题造成的。

'-' 组成的水平线是一个width 短(您正在计算表格的大小,但您错过了标签)。您可以利用 std::string 构造函数来打印它

std::cout << '\n' << std::string((columns + 1) * width, '-') << '\n';

要对齐其他行,您只需要一个额外的空间。

std::cout << ' ' << alfa[i];
//           ^^^                                  You could use std::setw(width), instead
for (int z = 0; z < rows; z++)
{
     std::cout << std::setw(width) << veld[i][z];
     //                               ^^^^        Note that the parameter is called BATTLEFIELD 
}
std::cout << std::endl;

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 2021-02-21
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多