2013-04-05 45 views
0

我有一個在這裏寫出的矩陣,它出現在屏幕上的罰款,但我想把符號放入它。我似乎無法讓符號(X)出現在它中。對不起,這是我第一次使用數組。無法在我的矩陣中插入符號

#include <iostream> 
#define WIDTH 70  
#define HEIGHT 20 
using namespace std; 

void main() 
{ 
    char world[HEIGHT][WIDTH]; 
    // draws matrix 
    for (char i = 0; i < HEIGHT; i++) { 
      for (char j = 0; j < WIDTH; j++) { 
       world[i][j] = '.'; 
       cout << world[i][j]; 
      } 
      cout << endl; 
    } 
    // 1st symbol at coordinates 1, 1 
    int x, y; 
    x = 1, y = 1; 
    world[x][y] = 'x'; 
    cout << world[x][y]; 

    // 2nd symbol at coordinates 2, 2 
    x = 2, y = 2; 
    world[x][y] = 'x'; 
    cout << world[x][y]; 

    //so on.. 

}

+0

那麼*發生了什麼? – 2013-04-05 19:11:25

+1

你不能'回頭',然後回去改變它。您是否期望''。''被替換爲''x''?另外,**'void main' **? – 2013-04-05 19:12:10

+1

樣式註釋:它是'int main',而不是'void main';最好使用'std :: vector'; '#define'常量不好。另外,'x = 1,y = 1;'是非常罕見的,並且沒有真正意義,更好的方法是使用分號來表示它的用途。另外:使用'int'進行索引,而不是'char'好得多。只要您爲WIDTH和/或HEIGHT超過了2 (在1個char = 8位C++實現上),您的代碼就會進入實現定義的行爲(至少)。一旦超過2 ,您輸入未定義的行爲。 – 2013-04-05 19:18:13

回答

0

你必須第一插入x秒,然後打印電網,而不是相反。

0

首先,main應宣佈爲int main()int main(int argc, const char* argv[]);它肯定不會返回void

標準輸出cout按順序工作。你只要告訴它要打印什麼,並且一個接一個地完成。考慮以下幾點:

int x = 1; 
std::cout << x; 
x = 2; 
std::cout << x; 

因爲我們改變了x值,然後將它傳遞給cout再次,它看起來像你期望的輸出將是:

2 

其實輸出是:

12 

cout不關心我們給它傳遞了兩次相同的變量。它只是印出我們一個接一個地給出的每件東西。

你將不得不設置矩陣的每個元素,你想成爲一個'x',然後再次遍歷它並打印出來。