Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mazarinik
0 / 0 / 0
Регистрация: 02.10.2013
Сообщений: 17
#1

Множественное число - C++

03.12.2013, 11:50. Просмотров 415. Ответов 1
Метки нет (Все метки)

Помогите, пожалуйста, написать данную программу или дайте хотя бы дельный совет как её написать

Для большинства существительных, оканчивающихся на -онок и -ёнок, множественное число образуется с помощью суффиксов ат или ят. Причем если перед суффиксом стоит шипящая согласная, то используется ат, н-р: цыпленок - цыплята, мышонок - мышата и т.д. Имеется целый ряд исключений, из которых наиболее часто употребляются следующие:

ребенок - дети,
бесенок - бесенята,
звонок - звонки,
позвонок - позвонки,
подонок - подонки,
колонок - колонки,
жаворонок - жаворонки,
бочонок - бочонки.

Другие слова-исключения можно не рассматривать.
Из заданного текста, в котором существительные отмечены буквой "с" в скобках, например: Вороненок(с) выпал из гнезда(с), выбрать все существительные на -онок и -ёнок и получить их во множественном числе.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 11:50     Множественное число
Посмотрите здесь:

Множественное наследование C++
множественное наследование C++
Множественное наследование C++
Множественное наследование C++
Множественное наследование C++
Множественное наследование C++
C++ множественное наследование
C++ Множественное наследование
Множественное наследование C++
Множественное наследование C++
Исправить в тексте множественное число существительных на единственное там, где это необходимо C++
C++ Множественное наследование в С++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ullaluna
8 / 6 / 1
Регистрация: 11.11.2013
Сообщений: 75
04.12.2013, 00:31     Множественное число #2
Пытаться кодить этот ад на не-скриптовом языке я не буду, уж простите, сударь. Прямо трагедия, если Вам дали такое задание.

Насчет алгоритма есть идейка. У Вас слишком много операций с одним словом (да какой там, матерьбошья, не с одним!), чтобы проводить их сразу в первоначальном тексте. Имхо, это тот случай, когда надо разделять и властвовать.

Воспользуемся этой функцией http://www.c-cpp.ru/content/ispunct

Тогда переменная trigger = ispunct(cursor) "ловит" начало и конец слова; cursor - текущий читаемый символ. И будет это нечто примерно такое:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
ПОКА (не конец файла) {
    ПОКА ( trigger == 0) {                    //читаемый символ не является пробелом\знаком препинания
        записываем текущий символ в динамический массив;
        передвигаем переменную cursor на следующий символ;
        trigger = ispunct(cursor);
    }                                                                           //выходим из цикла, когда заканчивается слово
    передаем получившийся массив (слово) в функцию MakeItPlural;
    обрабатываем значение (успех или ошибка), возвращаемое функцией;
    
    ПОКА (trigger != 0) {
        передвигаем переменную cursor на следующий символ;
        trigger = ispunct(cursor);
    }
}                                                                              //читаем новое слово, пока не кончится файл
 
Функция MakeItPlural {
    массив известной длины исследуем на предмет наличия последовательностей "онок", "енок" в конце массива;
    ЕСЛИ (нашли последовательность) {
        сравниваем со списком исключений;
        ЕСЛИ (слово - исключение)
           выводим множественное число на экран;
        ИНАЧЕ {
           кромсаем по вышеприведенному правилу;
           выводим на экран;
        }
    }
    очищаем массив;
    в случае успеха возвращаем нуль;
}
Да, не пришлось использовать обозначение (с). ispunct его разрежет на букву и два знака пунктуации. С другой стороны, без костылей падать всяко красивее, да и неприятно связываться со "словами", включающими в себя знаки препинания, не правда ли?!. Не знаю, поможет или нет. Удачи.
Yandex
Объявления
04.12.2013, 00:31     Множественное число
Ответ Создать тему
Опции темы

Текущее время: 18:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru