4 / 1 / 2
Регистрация: 08.03.2013
Сообщений: 65
1

Получить слово во множественном числе

25.12.2013, 04:40. Показов 1779. Ответов 5
Метки нет (Все метки)

Помогите решить задачу для зачета =)

для большинства существительных, оканчивающихся на -онок и -енок, множественное число образуется от другой основы. Как правило, это происходит по образцу: цыпленок - цыплята, мышонок-мышата и т.д. (в новой основе пред последней буквой Т пишется А или Я в зависимости от предыдущей буквы: если это шипящая, то А иначе - я)ю Имеются слова - исключения, из которых укажем следующие: ребенок(дети), бесенок(бесенята), опенок(опята), звонок(звонки), позвонок(позвонки), подонок(подонки). Есть еще ряд малоупотребительных слов-исключений, которые мы не рассматриваем.

Дан текст, среди символов которого имеется пробел, группа символов, предшествующая первому пробелу, представляет собой русское слово, оканчивающееся на -онок или -енок. Получить это слово во множественном числе.

А это код, начал писать, и напоролся на ошибку

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include"math.h"
#include <locale>
#include <iostream>
#include <string>
#include <vector>
#include<conio.h>
using namespace std;
 
 
 
void split(std::vector<std::string>& v, const std::string& s, const std::string& delim) //юзаем велосипед
{
    std::string::size_type first = 0;
    std::string::size_type last = 0;
 
    while( (first = s.find_first_not_of(delim, last)) != std::string::npos )
    {
        if( (last = s.find_first_of(delim, first) ) != std::string::npos )
            v.push_back( s.substr(first, last - first) );
        else
            v.push_back( s.substr(first, s.length() - first) );
    }
}
 
int main()
{
    int mas = 0;
    std::string Vv;
    setlocale(LC_CTYPE, "russian");
    int end;
    std::string s = "Вороненок выпал из гнезда и сказал: мышонок ципленок олененок ребенок опенок подонок кроленок";
    std::vector<std::string> v;
    split(v, s, " ,.:");
 
    cout<<"Выделяем слова из текста: "<<endl<<endl;
    for(size_t i = 0; i < v.size(); ++i) {
        cout << v[i] << " ";
    }
 
    cout<<endl<<endl<<"Ищем нужные нам слова: "<<endl<<endl;
    for(size_t i = 0; i < v.size(); ++i) {
        mas = v[i].size();
        Vv = v[i];
        for(int ji=0; ji<=mas; ji++ ) {
           if((Vv[ji] == *"онок") || (Vv[ji] == *"енок")) {
               тут изменяем окончание слов и выводим на экран
           }
        }
    }
 
    cin>>end;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2013, 04:40
Ответы с готовыми решениями:

Получить слово во множественном числе
Для большинства существительных, оканчивающихся на -онок и -енок, множественное число образуется от...

Просит ввести слово, а затем выводит во множественном числе
Есть текст: Я знаю, как во множественном числе сказать слова: Капуста Кочерга Платье Нужно...

Текстовые файлы. К каждому слову первого файла в скобках приписать соответствующее слово во множественном числе
Ребят, помогите пожалуйста кто чем может не знаю как решать. 1) Для большинства существительных,...

Построить английское существительное в множественном числе
Множественное число большинства английских существительных получается путем добавления буквы &quot;s&quot; к...

5
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 05:43 2
Цитата Сообщение от leonP4 Посмотреть сообщение
А это код, начал писать, и напоролся на ошибку
Какую?
0
4 / 1 / 2
Регистрация: 08.03.2013
Сообщений: 65
25.12.2013, 05:48  [ТС] 3
Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Какую?
вот в этом месте ошибка
C++
1
if((Vv[ji] == *"онок") || (Vv[ji] == *"енок"))
Программа "[7408] 817.exe: Машинный код" завершилась с кодом 3 (0x3).
0
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 05:51 4
Цитата Сообщение от leonP4 Посмотреть сообщение
ji<=mas;
При таком условии будет выход за границу строки. Просто <.
1
4 / 1 / 2
Регистрация: 08.03.2013
Сообщений: 65
25.12.2013, 05:57  [ТС] 5
Цитата Сообщение от alsav22 Посмотреть сообщение
При таком условии будет выход за границу строки. Просто <.
О действительно, спасибо! На самом мелком запоролся
Ладно, цикл пошел, только выводит он немного не те слова, видимо проверка на окончание ошибочная, буду переписывать
0
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.12.2013, 06:04 6
Цитата Сообщение от leonP4 Посмотреть сообщение
видимо проверка на окончание ошибочная
Там совсем не то сравниваете: каждую букву слова с первым символом "онок", "енок".
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2013, 06:04
Помогаю со студенческими работами здесь

Определить и вывести на экран числа, которых нет ни в одной множественном числе
Построить пять множеств, состоящих из целых чисел от 0 до 100. Числовые значения имеют вводиться...

дано слово s1 получить слово s2 образованное нечетными буквами слова s1
помогите решить задачи: 1)дано слово s1 получить слово s2 образованное нечетными буквами слова s1...

Вводится слово s1. Получить слово s2, образованное нечетными буквами слова s1
5.2) Вводится слово s1. Получить слово s2, образованное нечетными буквами слова s1.

Дано слово а. Получить слово b, образованное нечётными буквами слова а.
8.1.2. Помогите, пожалуйста, решить задачу в С++. Дано слово а. Получить слово b,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru