2016-06-26 16 views
0

Ich möchte ein einfaches Programm machen, wo ein Benutzer "i x y" eingeben kann, wobei x und y ganze Zahlen sind, Dimensionen des Arrays. Ich habe eine Klasse myarray gemacht, die die Matrix macht. Die Ausgabe des Programms ist jedoch Leerzeichen und \ n. Weiß jemand, was kann ich tun, um es zu beheben?Erzeugen eines zufälligen 2D-Arrays

#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]; 
    } 
} 

Vielen Dank im Voraus!

+1

Das ist eine seltsame Einrückung Stil. – user2296177

+5

Diese Klasse [verletzt die Regel der Drei] (http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three). Wenn eine verletzungsbedingte Verletzung hinzugefügt wird, führt dies zu einem undefinierten Verhalten und einem wahrscheinlichen Absturz bei der Zerstörung. –

Antwort

2

Ihr Gitter ist vom Typ char und ostreams annehmen, dass Sie ein Zeichen gedruckt werden, anstatt einer Zahl. Die einfachste Lösung ist die Verwendung

1

Sie versuchen, eine char auszugeben, so erhalten Sie ASCII-Darstellung. Diese versuchen

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