Ranking (as of 2013-02-02): 56
Language: C++
/* UVa 739 - Soundex Indexing To build using Visual Studio 2008: cl -EHsc -O2 soundex_indexing.cpp */ #include <cstdio> char soundex_code(char c) { char cc = 0; switch (c) { case 'B': case 'P': case 'F': case 'V': cc = '1'; break; case 'C': case 'S': case 'K': case'G': case 'J': case 'Q': case 'X': case 'Z': cc = '2'; break; case 'D': case 'T': cc = '3'; break; case 'L': cc = '4'; break; case 'M': case 'N': cc = '5'; break; case 'R': cc = '6'; break; default: break; } return cc; } int main() { printf(" NAME SOUNDEX CODE\n"); const int nr_chars_max = 20, nr_coded_length = 4; char name[nr_chars_max + 1], code[nr_chars_max + 1]; while (scanf("%s", name) != EOF) { const char* p = name; char pcc = soundex_code(*p); int coded_length = 0; code[coded_length++] = *p++; for ( ; *p; *p++) { char cc = soundex_code(*p); if (cc && cc != pcc) code[coded_length++] = cc; pcc = cc; } while (coded_length < nr_coded_length) code[coded_length++] = '0'; code[nr_coded_length] = '\0'; printf(" %-25s%s\n", name, code); } printf(" END OF OUTPUT\n"); return 0; }
No comments:
Post a Comment