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

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

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

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

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

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

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

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

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

Подставлять слово в нужную форму (множественное число, падеж слова) - C++
Здравствуйте!! есть такая задача: написать скрипт, который будет подставлять слово в нужную форму. Например, ставить слово во...

Исправить в тексте множественное число существительных на единственное там, где это необходимо - C++
Входной файл: input.txt Выходной: output.txt Лимит времени: 10 сек. Ни для кого не секрет, что не королевское дело - бумажки писать,...

Множественное наследование - C++
#include "stdafx.h" #include <iostream> #include <string.h> #include <conio.h> using namespace std; class ship { ...

Множественное наследование - C++
В спортивных соревнованиях различных видов спорта приняли участие люди из разных стран. Название страны имеют следующую структуру country =...

Множественное наследование - C++
По этой схеме нужно сделать множественное наследование. Вот код:#include <iostream> #include <conio.h> #include <string> using...

Множественное наследование - C++
Доброй ночи!:) вот условие http://www.imagepost.ru/images/1/5n/15n_1.jpg каждом класс должен содержать инициализирующие...

1
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 его разрежет на букву и два знака пунктуации. С другой стороны, без костылей падать всяко красивее, да и неприятно связываться со "словами", включающими в себя знаки препинания, не правда ли?!. Не знаю, поможет или нет. Удачи.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 00:31
Привет! Вот еще темы с ответами:

Множественное наследование - C++
Вычислите площадь и периметр прямоугольника, если известны его диагональ и одна из сторон.

множественное наследование - C++
Мечтаю реализовать такую иерархию human->employee->doctor в реализации doctor ругает конструктор. Ошибка 1 error C2062: type 'char'...

Множественное наследование - C++
Имеется множественное наследование в виде треугольника. Если в обоих базовых классах имеются поля с одинаковым названием и смыслом, может...

Множественное наследование - C++
Добрый день. У меня имеется базовый класс A. У этого класса есть несколько наследников. Есть еще один класс B, который является...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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