#include #include #define INFILE "deli.in" #define isVocal(x) (((x) == 'a') || ((x) == 'e') || ((x) == 'i') || ((x) == 'o') || ((x) == 'u')) int main() { int nIrregulars = 0, nWords = 0, j, i, k, m, n, nLen, found; char sIrrSingular[25][25]; char sIrrPlural[25][25]; char tmp[32]; char n1, n2; FILE *infile = NULL; infile = fopen(INFILE, "r"); fscanf(infile, "%d %d\n", &nIrregulars, &nWords); for (i = 0; i < nIrregulars; ++i) { fscanf(infile, "%s %s\n", sIrrSingular[i], sIrrPlural[i]); } for (i = 0; i < nWords; ++i) { fscanf(infile, "%s\n", tmp); n = strlen(tmp); n1 = tmp[n - 1]; n2 = tmp[n - 2]; found = 0; for (j = 0; j < nIrregulars; ++j) { if (!strcmp(tmp, sIrrSingular[j])) { found = 1; printf("%s\n", sIrrPlural[j]); break; } } if (found) continue; if (n1 == 'y' && !isVocal(n2)) { tmp[n - 1] = 'i'; tmp[n] = 'e'; tmp[n + 1] = 's'; tmp[n + 2] = '\0'; printf("%s\n", tmp); continue; } if ((n1 == 'o') || (n1 == 's') || (n1 == 'x') || ((n1 == 'h') && (n2 == 'c')) || ((n1 == 'h') && (n2 == 's'))) { tmp[n] = 'e'; tmp[n + 1] = 's'; tmp[n + 2] = '\0'; printf("%s\n", tmp); continue; } tmp[n] = 's'; tmp[n + 1] = '\0'; printf("%s\n", tmp); } /* for nWords */ fclose(infile); return 0; }