2014-04-02 64 views
0

對於作業任務的一部分,我有一個程序,要求用戶輸入他們想要隱藏在單詞搜索拼圖中的單詞。之後,我必須通過一個函數來檢查每個單詞是否可以水平插入到拼圖中。所以函數接受這個單詞,並試圖在隨機的行和列位置開始它,並檢查單詞是否適合。如果單詞的每個字符替換空單元格或匹配單元格中的現有字符,則可以進行放置。如果可以插入單詞,請將單詞插入拼圖中,並停止嘗試放置單詞。我必須嘗試在拼圖中插入單詞10次(使用不同的起始位置)或直到插入單詞。如果經過10次嘗試並且不能插入該單詞,則該功能應該以不插入單詞結束。無論單詞是否被插入,函數都必須返回一個代碼,指示將指定單詞成功或不成功插入到拼圖中。二維數組單詞搜索拼圖驗證

這是代碼,我拿出這麼遠:

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

char puzzle[20][20] = {}; 

int row = 0; 

int column = 0; 

char word[20][100] = {}; 

int numword = 0; 

for(i = 0;i < numword;i++) 
    { 
     horizontalinsertion(puzzle,row,column,word); 
    } 

這是我迄今所編寫的功能:

void horizontalinsertion(char puzzle[][20],int row,int col,char word[][100]) 

{ 

int num1 = 0; 
int num2 = 0; 
int i = 0; 
int j = 0; 
int k = 0; 

srand(time(NULL)); 
    while(i < 10) 
    { 
     for(j = 0;j < row;j++) 
     { 
     num1 = (rand()% row); 
     for(k = 0;k < col;k++) 
     { 
      num2 = (rand()% col); 
      printf("%d\n",num); 
      if(num <= strlen(word[j][k])) 
      { 
      printf("Word was successfully inserted\n"); 
      break; 
      } 
      else 
      { 
      i++; 
      } 
     } 
     } 
    } 



return; 

} 

的「謎」數組用於打印出單詞搜索的網格,大小由用戶使用「行」和「列」變量確定。 '單詞'數組存儲用戶想要放置在拼圖中的所有單詞,整數'numword'用於跟蹤用戶輸入的單詞數量。大多數情況下,我似乎無法弄清楚如何在生成適當的數字時停止循環,消息不會打印出來,並且在打印出11個數據時應該只有10個數字。 我一直試圖弄清楚這一整天,所以我非常感謝任何人可以幫助我解決這個問題。

+0

第一個'printf'中的num變量是什麼? – ace

+0

您的函數'horizo​​ntalinsertion'會將這個單詞插入到多行中,因爲當插入單詞時您從列循環中斷開,如果您只插入一次,則應該用'return;'替換'break;'; –

回答

0

由於這是一個無效函數,而不是break,所以可以使用return來退出整個函數。