здесь предполагается, что моя программа
Напишите программу, которая принимает существительные и формирует их множественные числа на основе правил:
- Если существительное оканчивается на «у», удалите«y» и добавьте «ies».
- Если существительное оканчивается на «s», «c», «ch» или «sh», добавьте «es».
- Во всехв других случаях просто добавьте «s».
Напечатайте каждое существительное и его множественное число.
Это работает нормально, когда я ввожу такое слово, как молочные, оно печатает молочные, но оно зацикливаетсяпечатает dairieseseseseseseseseseseses ... и так далее.Я надеялся, что это быстрое решение, которое я не могу найти, и кто-то может помочь мне с этим!
Спасибо!
#include <stdio.h>
#include <string.h>
#define max_word 20
/* prototypes */
void pluralize (char word[]);
int main (void)
{
char noun[max_word]; /* stores temporary word entered by user */
printf("Enter a noun in singular form: ");
scanf("%s", noun);
while (strcmp(noun, "done") != 0)
{
pluralize (noun);
printf("The plural form is %s\n", noun);
}
return;
}
void pluralize (char word[])
{
int length;
char noun;
length=1;
length = strlen(word);
if (word[length - 1] == 'y')
{ word[length - 1] = 'i';
word[length] = 'e';
word[length + 1] = 's';
word[length + 2] = '\0';
}
/* if word ends in "s" "ch" or "sh" add "es" */
else if (word[length - 1] == 's' ||
(word[length - 2] == 'c' && word[length - 1] == 'h') ||
(word[length - 2] == 's' && word[length - 1] == 'h'))
{ strcat(word, "es");
}
else
{ strcat(word, "s");
printf("New word is: ", &noun);
}
return;
}