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

Разбить введенное слово на слоги - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.92
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
25.02.2013, 17:27     Разбить введенное слово на слоги #1
Разбить введенное слово на слоги так, чтобы в первом слогу было больше чем одна буква и оканчивалась на гласную, а второй слог содержал хотя бы одну гласную.
Не могу понять какие использовать функции.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
2861 / 1809 / 272
Регистрация: 27.08.2010
Сообщений: 4,893
Записей в блоге: 1
25.02.2013, 22:57     Разбить введенное слово на слоги #2
Мне кажется, сама постановка задачи ошибочна. Например, слово Я-МА вы как поделите?
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
26.02.2013, 01:12     Разбить введенное слово на слоги #3

Не по теме:

так и поделит яма



Добавлено через 2 часа 6 минут
Программой называть нельзя - это костыль, но этот костыль немного умеет


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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
#include <string>
 
using namespace std;
 
bool myfunc(char ch)
{
    
    char glas[]="УЕЭОАЫЯИЮуеэоаыяию";
    
    
    for (unsigned i=0;i<strlen(glas);i++)
    {
        if (ch==glas[i]) return 1;
    }
 
    return 0;
 
}
 
int main()
{
    char S[255];
    int count=0,i=0;
    system("chcp 1251");
 
    cin.getline(S,255);
 
        
    unsigned int j=1;
    int cur=0;
        
    if (strlen(S)>3)
    {
    cout<<S[0];
    
    do
    {
    if (myfunc(S[cur]))
    {       
        do
        {                   
            cout<<S[j];
            j++;
        } 
        while (myfunc(S[j+1]));
        
        cout<<"\n"<<S[j];       
        j++;
 
    } else if (!myfunc(S[cur]))
      {
        do
        {
            if (j>strlen(S)-2)
            {
                cout<<S[j];
                j++;
                goto l1;
            }
            cout<<S[j];
            j++;
        }
        while (!myfunc(S[j]));
        cout<<S[j]<<"\n";
        
        if (j==strlen(S)-2) 
        {
            cout<<S[j+1];
            j++;
        }
        j++;
      }
    cur=j;  
    }
    while (j<strlen(S)-1);
    }
    else cout<<S;
    
 
l1:
        if (j==strlen(S)-1) cout<<S[j];
 
    cin.get();
    cin.get();
    return 0;
}
Яма = Яма
Коровопостроение = Коро - во - по - стро - ени - е
Мамонт = Мамо - нт
хорошее = хоро - ше - е
бесперспективность = беспе - рспе - кти -вно - сть
идеал = иде - ал
длиношееер = дли - но - ше - е - ер
благополучие = бла - го - по - лу - чи -е
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
26.02.2013, 01:15     Разбить введенное слово на слоги #4
Цитата Сообщение от daslex Посмотреть сообщение
так и поделит яма
я-ма

Добавлено через 50 секунд
Цитата Сообщение от daslex Посмотреть сообщение
bool myfunc(char ch)
strchr() не?
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
26.02.2013, 01:19     Разбить введенное слово на слоги #5
Kuzia domovenok, там условие, что слог
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
я-ма
Цитата Сообщение от DIEZEL-man Посмотреть сообщение
в первом слогу было больше чем одна буква
Дик
0 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 18
25.10.2013, 20:33     Разбить введенное слово на слоги #6
Ну да) задача видимо такая, как у меня: Дан текст, состоящий из русских слов. Составить программу, выполняющую разделение его на слоги путём вставки между ними чёрточек. Основные правила разделения на слоги следующие:
1) Две идущие подряд гласные можно разделить, если первой из них предшествует согласная,а за второй идет хотя бы одна буква.
2) Две идущие подряд согласные можно разделить, если первые из них предшествует гласная, а в той части слова, которая идёт за второй согласной, имеется хотя бы одна гласная.
Если не удаётся применить пункты 1),2),то следует попытаться разбить слово так, чтобы первая часть содержала более чем одну букву и оканчивались на гласную, а вторая содержала хотя бы одну гласную.
gazlan
2861 / 1809 / 272
Регистрация: 27.08.2010
Сообщений: 4,893
Записей в блоге: 1
25.10.2013, 20:55     Разбить введенное слово на слоги #7
1. IMHO, следовало бы создать новую тему. Все-таки у вас отличающееся задание.
2. Я-МА опять не поделится.
3. Первые два пункта легко реализуются " в лоб" - сканируете слово, просматриваете текущую букву и следующую за ней. Если удовлетворяет правилу - вставляете дефис.
Остальное... вот, к примеру "чиуауа" (порода собак) как правильно делить?

А вот еще, из вики:

самые длинные односложные слова: «взбзднуть» (9 букв); «вскользь» (8 букв); «всласть», «всплеск», «вскрыть», «всклень», «всплыть», «встрять», «страсть» (7 букв)
Trademaster
 Аватар для Trademaster
3 / 3 / 0
Регистрация: 08.10.2013
Сообщений: 21
25.10.2013, 21:08     Разбить введенное слово на слоги #8
Создай массив \ список гласных букв и каждый раз делаем так:
берем вводное слово , первая буква гласная? Заносим в массив.
вторая согласная? А первая была гласная? Динамически заносим в список второй слог , дальше проверяем ,третья буква (после гласной) согласная? Если да ,то эту букву в массив с второй буквой (т.е во второй слог ,первый слог - это одна гласная буква). И т.д.


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

СОРИ ,ЕСЛИ Я ЧТО ТО НЕ ПОНЯТНО НАПИСАЛ )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2013, 21:10     Разбить введенное слово на слоги
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Дик
0 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 18
25.10.2013, 21:10     Разбить введенное слово на слоги #9
ну примерно напишите как ) я просто не очень хорошо разбираюсь) а мне задали) препод мало что дает из материала) если не сложно помогите с чего начать то? А кстати я создал тему так-то: Разделение слов на слоги в С++
Yandex
Объявления
25.10.2013, 21:10     Разбить введенное слово на слоги
Ответ Создать тему
Опции темы

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