Матч
302, Преобразование существительного (NounReform)
Дивизион 2, Уровень
1
Для преобразования имени
существительного из единственного во множественное число в английском языке
пользуются следующими общими правилами:
1. Если слово оканчивается на 's', 'z', 'x', 'ch' или 'sh', то к слову
приписывают ‘es’;
2. Если слово оканчивается на 'ay', 'ey', 'iy', 'oy' или 'uy', то к слову
приписывают ‘s’;
3. Если слово оканчивается на 'y', но не удовлетворяет ни одному из случаев пункта 2,
то 'y' заменяется на 'ies'.
4. Во всех остальных случаях к
слову добавляется ‘s’.
Преобразовать заданные слова
(имена существительные) во множественное число.
Класс: NounReform
Метод: vector<string> makePlural(vector<string> nouns)
Ограничения:
массив nouns содержит до 20 строк, каждая
строка nouns[i] содержит от 1 до 20 букв ‘a’
– ‘z’.
Вход. Массив строк имен существительных nouns
в единственном числе.
Выход. Массив строк имен существительных во множественном числе.
Пример входа
nouns |
{“box", "church", "elephant",
"stereo"} |
{“tray", "key", "enemy",
"baby"} |
{"a", "s", "oy",
"y", "yy”} |
Пример выхода
{“boxes", "churches",
"elephants", "stereos"}
{“trays", "keys", "enemies",
"babies"}
{“as", "ses", "oys",
"ies", "yies"}
РЕШЕНИЕ
обработка строк
Для каждого имени
существительного следует произвести описанные преобразования. Реализуем каждое
из описанных правил преобразования условным оператором, сравнивая последние
буквы слов.
ПРОГРАММА
#include <cstdio>
#include <vector>
#include <string>
using namespace std;
class NounReform
{
public:
vector<string> makePlural(vector<string> nouns)
{
int i, len;
for(i = 0; i < nouns.size(); i++)
{
len = nouns[i].size() - 1;
if ((nouns[i][len] == 's') || (nouns[i][len] == 'z')
||
(nouns[i][len]
== 'x') ||
((nouns[i][len-1] == 'c') &&
(nouns[i][len] == 'h'))||
((nouns[i][len-1] == 's') &&
(nouns[i][len] == 'h')))
nouns[i] += "es"; else
if ((nouns[i][len] == 'y') && ((nouns[i][len-1] == 'a')) ||
(nouns[i][len-1] == 'e') ||
(nouns[i][len-1] == 'i') ||
(nouns[i][len-1] == 'o') ||
(nouns[i][len-1] == 'u'))
nouns[i] += "s"; else
if (nouns[i][len] == 'y')
{
nouns[i].erase(nouns[i].end()-1);
nouns[i] += "ies";
}
else nouns[i] += "s";
}
return nouns;
}
};