Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 02.10.2013
Сообщений: 17
1

Множественное число

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

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

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

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

Другие слова-исключения можно не рассматривать.
Из заданного текста, в котором существительные отмечены буквой "с" в скобках, например: Вороненок(с) выпал из гнезда(с), выбрать все существительные на -онок и -ёнок и получить их во множественном числе.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2013, 11:50
Ответы с готовыми решениями:

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

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

Множественное наследование
Доброго времени суток. Есть ряд операций. Логически операции делятся на группы ( к примеру,...

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

1
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
04.12.2013, 00:31 2
Лучший ответ Сообщение было отмечено mazarinik как решение

Решение

Пытаться кодить этот ад на не-скриптовом языке я не буду, уж простите, сударь. Прямо трагедия, если Вам дали такое задание.

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

Воспользуемся этой функцией 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
04.12.2013, 00:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2013, 00:31
Помогаю со студенческими работами здесь

Множественное наследование
В спортивных соревнованиях различных видов спорта приняли участие люди из разных стран. Название...

Множественное наследование
Есть два класса Human(fname, lname) и класс Employee c чисто виртуальными функц (зарплата и...

Множественное наследование
#include "stdafx.h" #include <iostream> #include <string.h> #include <conio.h> using...

Множественное наследование
У меня есть 3 класса Book class Book { protected: string namebook; string author; string...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru