2014-04-09 79 views
0

我已經制作了一個程序,允許您選擇網格的大小,並允許您輸入最多20個單詞。現在我必須使用函數將輸入的文字水平插入原始數組中。該函數必須返回成功的值和未能將該詞輸入拼圖板的值。我需要幫助開始瞭解函數原型的實際函數應該如何。僞代碼會很有幫助。我是一個相當新的程序員,所以任何幫助都很棒。謝謝製作詞語搜索拼圖?

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

void printmatrix(char matrix[][20],int); 
void inserthor(char matrix[][20],int); 

int main(void) 
{ 
    //declare variables 
    char matrix[20][20]; 
    char words[20][100]; 

    int x; 
    int a,b; 
    int i=0; 
    int n=0; 

    for (a=0;a<20;a++) 
    { 
     for (b=0;b<20;b++) 
     { 
      matrix[a][b] = '+'; 
     } 
    } 

    while (x<10 || x>20) 
    { 
     printf("How large would you like the puzzle to be (between 10 and 20):\n"); 
     scanf("%d",&x); 
    } 

    printmatrix(matrix,x); 

    //part 3 

    printf("Enter up to 20 words to hide in the puzzle.\n"); 
    printf("Enter the word 'done' after your last word if entering less than 20 words.\n"); 
    for (i = 0; i < 20; i++) 
    { 
     printf("Enter word %2d:\n", i+1); 
     if (scanf("%99s", words[i]) != 1 || strcmp(words[i], "done") == 0) 
      break; 
    } 
    n = i; 
    printf("%d words entered\n", n); 
    for (i = 0; i < n; i++) 
     printf("Word %2d = [%s]\n", i+1, words[i]); 
    return 0; 
} 

void printmatrix(char matrix[][20],int x) 
{ 
    int i,j; 
    printf("Empty Puzzle:\n"); 

    for (i=0;i<x;i++) 
    { 
     for (j=0;j<x;j++) 
     { 
      printf(" %c ", matrix[i][j]); 
     } 
     printf("\n"); 
    } 
} 

回答

0

你的函數原型

void inserthor(char matrix[][20],int); 

缺乏與要輸入的單詞,要返回的值的參數。你可以使用

char *inserthor(char matrix[][20], int order, char *word) 
{ 
    int i, j, l = strlen(word); 
    for (i = 0; i < order; ++i) 
    for (j = 0; j <= order-l; ++j) 
     if (matrix[i][j] == '+') return memcpy(&matrix[i][j], word, l); 
    return NULL; 
} 

它返回成功的插入字的地址和NULL的失敗地址。