【问题标题】:Spell Check Algorithm拼写检查算法
【发布时间】:2015-03-24 17:13:26
【问题描述】:

我正在 c 中为我的信息学类实现拼写检查算法

特殊要求是:

  • 主函数中的所有内容
  • 不允许字符串类
  • 保持简单(以便在汇编器中进一步重新实现)

所以我现在卡住了。我创建了一个程序,但如果没有strstrsscanf,我无法想象如何实现它。

我的代码:

int main() {
  char c;
  int index;
  int len = 0;
  char a[10000];
  char s[100];
  char *e;
  char ch = ';';
  char p = '.';

  while ((c = getchar()) != '\n') {
    a[index++] = c;
  }

  char *test;
  test = a;
  char *start;

  while (*test != ch)
    *++test;

  e = test;
  *e++ = 0;

  int k = 0;
  while (e[k] != p) {
    k++;
  }
  e[k] = 0;
  int x;
  int i, j, counter = 0;

  for (x = 0; 1 == sscanf(e += x, "%99s%n", s, &x);)
    if (strstr(a, s))
      printf("*%s* ", s);
    else
      printf("%s ", s);
  puts(".");
}

知道如何重写它吗?特别是我正在寻找sscanf 替代方案。

编辑: 输入声明如下:
XY BCDE BX CDE CDEF;BCDE XY UV ABC CDE BX X A CDEF。

这是输入字符串。它被a分成2部分;

首先是字典。 ; 之后的第二个是要检查的词。

如果这个词是已知的,我需要在stdout 上打印它。如果不是,我用"*" 包围打印它。

【问题讨论】:

  • .: 你如何检查拼写是否正确?您必须在某个地方存储正确的拼写。不是吗?
  • 可读性失败。单字母 var 名称。
  • 此时 strstr 正在检查我....
  • 我的编译器说*++test; 没有效果。你想要++test吗?
  • 这确实有效。我只想增加指针,直到找到分号。

标签: c string algorithm


【解决方案1】:

至少,您需要包含一个字典来进行拼写检查。 trie 对于表示字典和进行快速拼写检查非常有用。

http://en.wikipedia.org/wiki/Trie#Dictionary_representation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2011-02-11
    • 2010-12-01
    相关资源
    最近更新 更多