2013-04-15 79 views
1

我正在嘗試創建一個數組,該數組需要用戶輸入並在99 99處中斷,但多維數組不會停止輸入值。另一個問題是在視覺表示中將值顯示在下面的網格中。如果需要更多的澄清,請讓我知道。簡單數組座標顯示匹配

enter image description here

#include <iostream> 
#include <ctime> 

using namespace std; 

int main() 
{ 

srand(time(0)); 

int organisms[22][22]; 
int rows, 
    columns; 
int input[22][22]; 
int *output = new int[]; 

//filling array 

for(int i=0;i<22;i++) 
{ 

    for(int j=0;j<22;j++) 
    { 
     organisms[i][j]=0; 
    } 
} 


//column output 

cout<<"\t\t\t\t\t\t\t\t\t\t\t\t\tColumn\n\n"; 
for(columns=1;columns<21;columns++) 
{ 
    cout<<"\t"<<columns; 
} 
cout<<"\n\n\n"; 

//Row and data output 

    for(int i=0;i<20;i++) 
    { 

     cout<<"Row "<<i+1<<"\t"; 

     for(int j=0;j<20;j++) 
     { 
      cout<<organisms[i][j]<<"\t"; 
     } 
     cout<<endl; 
    } 
cout<<"\n\n\n"; 
cout<<"Enter each cell in first colony use row space column Enter format, 3 4, for example.\nEnter 99 99 to end entries.\n"; 

//input of values 

cin.ignore(4); 

int m=0; 


do 
{ 

    cin>>input[m][m]; 
    m++; 

    if(input[m][m]!=99,99) 
     break; 

}while(m<20); 



/* 
while(input[m][m]!=99,99) 
{ 
    cin>>input[m][m]; 
    m++; 

} 
/* 
for(int m=0;m<INT_MAX;m++) 
{ 
    cin>>input[m][m]; 

    if(input[m][m]==99) 
     break; 
} 
*/ 


//input array indexing 






//output array 

cout<<"\n\n\n"; 
cout<<"\t\t\t\t\t\t\t\t\t\t\t\t\tColumn\n\n"; 
for(columns=1;columns<21;columns++) 
{ 
    cout<<"\t"<<columns; 
} 
cout<<"\n\n\n"; 

     for(int i=0;i<20;i++) 
     { 

     cout<<"Row "<<i+1<<"\t"; 
     cout<<endl; 

     for(int n=0;n<20;n++) 
     { 
      cout<<input[i][n]<<"\t"; 
     } 

     cout<<endl; 
} 

cin.get(); 
cin.get(); 

return 0; 
} 

回答

1

E.g)

#include <iostream> 
#include <iomanip> 
#include <utility> 
#include <vector> 
#include <iterator> 

using namespace std; 

const size_t size=20; 

char table[size][size]; 

void table_clear(void){ 
    for(int v = 0; v<size; ++v) 
     for(int h = 0; h<size; ++h) 
      table[v][h]=' '; 
} 

void table_put(pair<int, int> p){ 
    int v = p.first; 
    int h = p.second; 
    table[v-1][h-1] = '*';//to zero origin 
} 

void table_disp(){ 
    cout << " "; 
    for(int i=0; i<size;++i){ 
     cout << setw(3) << i + 1; 
    } 
    cout << "\n" << endl; 
    for(int i=0;i<size;++i){ 
     cout << setw(3) << left << i + 1; 
     for(int j=0;j<size;++j){ 
      cout << setw(3) << right << table[i][j]; 
     } 
     cout << endl; 
    } 
} 

int main(){ 
    vector<pair<int,int> > v; 
    pair<int, int> end(99,99); 
    pair<int, int> rc; 

    cout << "Enter each cell in first colony use row space column Enter format, 3 4, for example.\n"; 
    cout << "Enter 99 99 to end entries." << endl; 
    while(true){ 
     int row, column; 
     cin >> row; 
     cin >> column; 
     rc = make_pair(row, column); 
     if(rc == end) 
      break; 
     v.push_back(rc); 
    } 

    table_clear(); 
    for(vector<pair<int,int> >::const_iterator iter = v.begin();iter != v.end(); ++iter) { 
     table_put(*iter); 
    } 
    table_disp(); 
} 
+0

謝謝,有沒有辦法做到這一點,而沒有載體?我寧願保持它一個普通的數組。 – Klinetel

+1

@KlineTel我認爲這個矢量很容易替換爲一個數組。但對於矢量在大多數情況下很有用。 – BLUEPIXY

2
if(input[m][m]!=99,99) 

您的輸入是一個int數組,99,99不是int。使用有效的int值,5555例如,或簡單99

+0

的cin.ignore(500)中的方式獲得。我把它改成了cin.ignore(4)。 – Klinetel

+0

現在困難的部分是讓這些座標顯示在第二個輸出上。 – Klinetel

+0

究竟有什麼困難? ; p btw:不錯的命名約定,有機體,heh – 4pie0