【问题标题】:"Garbage" values in 2D array when trying to print via function尝试通过函数打印时二维数组中的“垃圾”值
【发布时间】:2014-02-03 06:21:19
【问题描述】:

我正在制作一款经典的井字游戏,但棋盘大小由用户定义。

在用户指定板的尺寸后尝试打印板(星号表示空位)时,我只得到看似垃圾的值。

#include <iostream>
#include <string>
using namespace std;

const int BOARD_MAX = 10;
const int BOARD_MIN = 3;

bool sizecheck(int);
void displayBoard(char [][BOARD_MAX], int);

int main(void)
{
    int boardsize, i, j;
    char grid[BOARD_MAX][BOARD_MAX];

    cout << "Please enter the size of the board (" << BOARD_MIN << " - " << BOARD_MAX << "): ";
    cin >> boardsize;

    if ((sizecheck(boardsize)) == false)
    {
        do
        {
            cout << "Must be a number between " << BOARD_MIN << " and " << BOARD_MAX << ". Try again." << endl;
            cout << "Please enter the size of the board (" << BOARD_MIN << " - " << BOARD_MAX << "): ";
            cin >> boardsize;

            sizecheck(boardsize);
        }

        while ((sizecheck(boardsize)) == false);
    }

    for (i = 0; i < boardsize; i++)
    {
        for (j = 0; i < boardsize; i++)
        {
            grid[i][j] = '*';
        }
    }

    displayBoard(grid, boardsize);

    return 0;
}

bool sizecheck(int fboardsize)
{
    if ((fboardsize > BOARD_MAX) || (fboardsize < BOARD_MIN))
    {
        return false;
    }

    else
    {
        return true;
    }
}


void displayBoard(char fgrid[][BOARD_MAX], int fboardsize)
{
    int i, j;

    for (i = 0; i < (fboardsize); i++)
    {
        for (j = 0; j < (fboardsize); j++)
        {
            cout << fgrid[i][j];
        }

        cout << endl;
    }
}

输出:

out http://puu.sh/6IfHU.png

该计划显然是一项正在进行的工作;使用函数后,我只是在打印数组时遇到问题。如果我尝试不使用该功能进行打印,它工作正常。我很难弄清楚出了什么问题。

对不起,超级基础的问题;我对 C++ 和一般编程非常陌生,而且很困惑。

谢谢!

【问题讨论】:

    标签: c++ arrays function multidimensional-array


    【解决方案1】:

    检查你的网格初始化周期...

    for (i = 0; i < boardsize; i++)
    {
        for (j = 0; i < boardsize; i++)
    

    【讨论】:

    • 感谢您回答我的问题,也很抱歉浪费您的时间!它至少让我注意到了 45 次。 :)
    • 发生了 :) 看看 c++ 和 for_each 之类的东西,它有助于减少潜在的错误。
    【解决方案2】:

    在你初始化板的代码中有一个错字:它应该是

    for (i = 0; i < boardsize; i++)
    {
        for (j = 0; j < boardsize; j++)
        {
            grid[i][j] = '*';
        }
    }
    

    【讨论】:

    • 天哪,我觉得自己很傻!我想有时需要其他人查看您的代码才能指出愚蠢的错误。谢谢!
    猜你喜欢
    • 2021-10-25
    • 2018-10-24
    • 1970-01-01
    • 2015-08-05
    • 2022-11-14
    • 1970-01-01
    • 2016-12-31
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多