Язык программирования Си


         

Хрестоматия по программированию на Си в Unix- часть 326


- 326 - Си в UNIX

static int spellmatch( uchar *word /* IN слово для коррекции */ , uchar *words[] /* IN таблица допустимых слов */ , uchar **indx /* OUT ответ */ ){ int i, code, total = (-1); uchar **ptr;

if(!*word) return -1;

for(ptr = words; *ptr; ++ptr) if(eqi(word, *ptr)){ if(indx) *indx = *ptr; return 0; } /* Нет в таблице, нужен подбор похожих */ for(ptr = words; *ptr; ++ptr){ uchar *s = *ptr; int max = 5; for(i=0; i < max; i++){ switch( i ){ Bcase(0,code = swapped(word, s) ) Bcase(1,code = duplicates(word, s, strlen(word)) ) Bcase(2,code = lost(word, s) ) Bcase(3,code = changed(word, s) ) Bcase(4,code = superfluous(word, s) ) }

if(code){ total++; printf("?\t%s\t%s\n", cname[i], s); if(indx) *indx = s;

/* В случае с дубликатами не рассматривать * на наличие лишних букв */ if(i==1) max = 4; } } } return total; }




Содержание  Назад  Вперед