生成一个随机的2D数组

Generating a random 2D array

本文关键字:随机 2D 数组 一个      更新时间:2023-10-16

我想做一个简单的程序,用户可以在其中输入" I x y",其中x和y是整数,数组的维度。我已经创建了一个类myarray来生成矩阵。然而,程序的输出是空格和n。有人知道我该怎么做吗?

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class myarray
{
    char** grid;
    int dimX,dimY;
public:
    myarray(){grid=0;}
    myarray(int m,int n) {grid = new char* [m]; for(int i=0;i<m;i++) {grid[i]=new char [n];} dimX=m; dimY=n;}
    ~myarray(){for(int i = 0; i < dimX; ++i) {delete[] grid[i];} delete[] grid;}
    char** fetcharray(){return grid;}
    void display_grid();
    void randomize_grid(){for(int i=0;i<dimX;i++) for(int j=0;j<dimY;j++) grid[i][j]=rand()%10;}
};
int main()
{
    srand(time(NULL));
    bool check(true);
    while(check)
    {
        char a; //a-firstinp;
        int m,n; //m,n-grid size
        cin>>a;
        switch(a)
        {
        case 'i':
        case 'I': {cin>>m>>n;
                  myarray c(m,n);
                  c.randomize_grid();
                  c.display_grid();
                  break;}
        default: {cout<<"Invalid input! Possible commands: i,c,l,v,h,k,f,s,x! Try again: n";
                  break;}
        }
    }
}
void myarray::display_grid()
{
    for(int i=0;i<dimX;i++)
    {
        cout<<"n";
        for(int j=0;j<dimY;j++)
            cout<<grid[i][j];
    }
}

提前感谢!

您的网格类型为charostreams,假设您正在打印字符而不是数字。最简单的修复方法是使用static_cast<int>(grid[i][j])

您正在尝试输出char,以便获得ascii表示。试试这个

cout<<(int)grid[i][j];