對於作業任務的一部分,我有一個程序,要求用戶輸入他們想要隱藏在單詞搜索拼圖中的單詞。之後,我必須通過一個函數來檢查每個單詞是否可以水平插入到拼圖中。所以函數接受這個單詞,並試圖在隨機的行和列位置開始它,並檢查單詞是否適合。如果單詞的每個字符替換空單元格或匹配單元格中的現有字符,則可以進行放置。如果可以插入單詞,請將單詞插入拼圖中,並停止嘗試放置單詞。我必須嘗試在拼圖中插入單詞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個數字。 我一直試圖弄清楚這一整天,所以我非常感謝任何人可以幫助我解決這個問題。
第一個'printf'中的num變量是什麼? – ace
您的函數'horizontalinsertion'會將這個單詞插入到多行中,因爲當插入單詞時您從列循環中斷開,如果您只插入一次,則應該用'return;'替換'break;'; –