做一个单词搜索拼图?

时间:2014-04-09 03:57:39

标签: c arrays char

我制作了一个程序,允许您选择网格的大小,它允许您输入最多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");
    }
}

1 个答案:

答案 0 :(得分: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表示失败。