2012-12-15 53 views
0

我正在爲一項任務編制一艘戰列艦程序。我無法找到放置這些船的好方法。我一直在想的是用一個10x10的數組填充零,然後用c代替載體,d代表驅逐艦等。但是我沒有太成功。如果任何人有任何想法我可以做到這一點,或者如果你知道更好的方式,那麼任何幫助或指導將不勝感激。更換C中陣列的元素

對不起這是我第一次在任何地方在線幫助。並回答這個問題。不,我不知道如何做陣列,這是我尋求幫助的原因之一。我一直在閱讀我的教科書,但是我沒有發現任何類似的東西,沒有一個具體的理解,就很難超出本書的意思。但是,這是我的代碼到目前爲止只是在將船舶

//================================FillArray========================================== 
void FillArray(int pboard[], int sboard[]); 
{ 

    //Statement 
    for(int y; y < col; y++); 
    { 
     printf("%d", y);//prints y axis boarder 
     for(int x=0; x < row; x++); 
     { 
     printf("%d", x);//prints x axis boarder 
     for(int y=0; y < col; y++); 
      pboard[row][col] = 0; 
     }//for 
    }//Fills array for play 


    for(int y; y < col; y++); 
    { 
     printf("%d", y);//prints y axis boarder 
     for(int x=0; x < row; x++) 
     { 
     printf("%d", x);//prints x axis boarder 
     for(int y=0; y < col; y++); 
      sboard[row][col] = 0; 
     }//for 
    }//Fills array for Ships 

    return; 
}//FillArray 


//================================PlaceShips========================================== 

void PlaceShips(int air=5, int bat=4, int cru=3, int des=1, int sub=2); 
{ 

    char ship; 
    int x,y; 
    int k; 

    //Statement 

    printf("Enter first letter of ship name: "); 
    if(scanf("%c", ship) == a) 
     { printf("You have 5 space, Please enter furthest left or futhest up coordinate: "); 
      scanf("%d%d", &x,&y); 
      while(x>10 && y > 10) 
       { 
        printf("Enter 1. to place ship vertically\nEnter 2. to place ship horizontally: ") 
        scanf("%d", &k) 
        for(k==1, y > 6, y++); 
        { pboard[row][y-1] = a; 
          if(y<0 || y >9) 
         printf("error"); 
        } 
        for(k==2, x > 6, x++); 
        { 
         pboard[x-1][col] = a; 
         if(x < 0 || x > 9) 
         printf("error"); 
        } 
       } 
     } 
} 

創建劉建林板和打板,我的嘗試是一個很好的方式去這樣做,或是否有更有效的方法。我嘗試過的結構類似於:

typedef struct 
{ 
char id[5]={a,a,a,a,a} 
char name[]=aircraft 
int hits=5 
} Aircraft Carrier 

但我無法確定他們將如何提供幫助。

+3

歡迎來到本網站!您通常希望提供更多關於您嘗試的方法的細節,以及您的代碼當前的外觀。這將幫助其他人給你更好的幫助。 – dasblinkenlight

+1

你能做什麼:)你不知道如何處理數組,或者有什麼問題......?您應該提供更多信息併發布您的代碼 – hqt

+0

向我們展示您嘗試的內容。 –

回答

1
for(&k==1, y > 6, y++) 

我想這是你遇到的問題之一。

首先,您需要用;劃分for()陳述。

其次,您正在訪問k的地址並檢查相等性。 for語句的第一部分通常設置一個變量。你需要重新思考你的邏輯。

 while(x>10 && y >> 10) 

>>不是他一樣>,要小心。

+0

謝謝,我不知道我無法使用變量的地址。這是一個很好的方式去做我想做的事情。看起來應該有不同的方式。我沒有要求任何代碼只是一個建議和一些想法去關於這個更有效的方式。我試圖使結構 typedef結構 { 焦炭ID [5] = {A,A,A,A,A} 焦炭名[] =飛機 INT命中= 5 } 但我不是肯定它會怎樣有幫助 –

0

看起來你正試圖在PlaceShips函數中做太多。這是一個風格問題,但我會先寫一個PlaceOneShipHorizontally()PlaceOneShipVertically() function.

例如,

void PlaceOneShipHorizontally(int board[], int ox, int oy, int character, int size) { 
    for (int x = ox; x < (size+ox); x++) { 
    board[x][oy] = character; 
    } 
} 

然後,編輯PlaceShips()函數的使用上述功能,一旦你確定用戶什麼想做。