Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 2
Регистрация: 10.11.2016
Сообщений: 27
1

Генератор слов

27.12.2016, 19:08. Просмотров 2323. Ответов 5
Метки нет (Все метки)

Я запутался в задаче. Не могу найти работающее решение.
Вообщем есть метод, который подставляет в wordStr символы, согласно структуре слова
c - согласная, v - гласная, j - j
этот код работает нормально:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        string ConvertSylStructToWordStr(string sylStructure)
        {
            string wordStr="";
            for (int i = 0; i < sylStructure.Length; i++)
            {
                if (sylStructure.Substring(i,1).Equals("c"))
                    wordStr += ConsRandom();
                else if (sylStructure.Substring(i,1).Equals("v"))
                    wordStr += VowelRandom();
                else if (sylStructure.Substring(i,1).Equals("j"))
                    wordStr += "j";
            }
            return wordStr;
        }
но мне еще нужно проверить если в структуре поподается "cc", то в wordStr нужно вставить возможные сочетания на этой позиции:
C#
1
2
3
4
5
6
7
string[] possibleUnits =
        {
            "br", "db", "dg", "dv", "dzjr", "fr", "fsj", "ft", "gm", "gz", "hdzj", "hr", "hs", "kh", "kt", "lb", "lk", "ll", "lr",
            "ltsj", "lz", "lhh", "mb", "md", "mdzj", "mk", "mt", "mhh", "nd", "ndzj", "ng", "nh", "nm", "nsj", "nhh", "qt", "rb",
            "rd", "rrd", "rdzj", "rf", "rg", "rh", "rk", "rn", "rg", "rv", "rz", "rrz", "sjb", "sk", "sjk", "sjm", "sjn", "sjq",
            "sr", "st", "sjt", "sjtsj", "tb", "tm", "vh", "vn", "vr", "vhh", "zb", "zk", "zm", "zjd", "hhb", "hhr", "hhsj", "hht" 
        };
для этого нужен уже другой цикл (на сколько я понял):
C#
1
j < sylStructure.Length-1
у меня как-то не получается чтобы эти циклы совместно работали нормально. Подскажите, пожалуйста, как мне сделать рабочий код
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2016, 19:08
Ответы с готовыми решениями:

Генератор слов
Добрый день знатоки. Подскажите как создать генератор слов в цикле вида: aa ab ac .. ba .....

Генератор слов
Здравствуйте! Хочу написать программу по генерированию слов из набора букв, но даже не представляю...

Генератор слов
Здравствуйте! Хочу написать программу по поиску слов из набора букв, но даже не представляю с чего...

Генератор слов
Помогите создать генератор слов, или может кто может скинуть что нибудь готовое, нужен генератор...

5
368 / 366 / 212
Регистрация: 29.03.2013
Сообщений: 867
27.12.2016, 21:26 2
Лучший ответ Сообщение было отмечено TinkRE как решение

Решение

TinkRE, по быдлокодерски наверное как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
string ConvertSylStructToWordStr(string sylStructure)
        {
            string wordStr="";
            for (int i = 0; i < sylStructure.Length; i++)
            {
                if (i < sylStructure.Length - 1 && sylStructure.Substring(i, 2).Equals("cc"))
                {
                    wordStr += PossibleUnitsRandom(); // функция рандомно выбирающая сочетания из возможных
                    i++;
                }
                else
                {
                   if (sylStructure.Substring(i,1).Equals("c"))
                       wordStr += ConsRandom();
                   else if (sylStructure.Substring(i,1).Equals("v"))
                       wordStr += VowelRandom();
                   else if (sylStructure.Substring(i,1).Equals("j"))
                       wordStr += "j";
                 }
            }
            return wordStr;
        }
1
0 / 0 / 2
Регистрация: 10.11.2016
Сообщений: 27
27.12.2016, 22:52  [ТС] 3
Спасибо большое, очень помог
На скриншоте результат и структура слова. Работает
0
Миниатюры
Генератор слов  
0 / 0 / 2
Регистрация: 10.11.2016
Сообщений: 27
28.12.2016, 17:25  [ТС] 4
Но все же потестил код и понял, что есть баг - появляется "cc" в начале структуры несмотря на то, что так не должно быть. Вот генератор структуры. Нет ни одного слога, который бы начинался с двойной "cc":
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
        string SylStructRandom(bool cbb4thItemIsChecked)
        {
            string sylStructure = "";
            int i = rGen.Next(1,6);//условный номер структуры слога
            if (cbb4thItemIsChecked) return sylStructure = "cv";
            switch (i)
            {
                case 1:
                     sylStructure = "cvc";
                    break;
                case 2:
                    sylStructure = "cvcc";
                    break;
                case 3:
                    sylStructure = "vcc";
                    break;
                case 4:
                    sylStructure = "vc";
                    break;
                case 5:
                    sylStructure = "cv";
                    break;
            }
            return sylStructure;
        }
я думаю проблема в итерации на этом участке:
C#
1
2
3
4
5
6
7
8
            for (int i = 0; i < sylStructure.Length; i++)
            {
                if (i < sylStructure.Length - 1 && sylStructure.Substring(i,2).Equals("cc"))
                {
                    int p = rGen.Next(0,possibleUnits.Length);
                    wordStr += possibleUnits[p];
                    i++;
                }
Как думаешь?
0
368 / 366 / 212
Регистрация: 29.03.2013
Сообщений: 867
28.12.2016, 20:06 5
TinkRE, я не до конца понял общую логику программы. Метод string ConvertSylStructToWordStr(string sylStructure) он же начальную структуру sylStructure не меняет. Судя по методу генератора не должно появляться "сс" в начале структуры, это да. У себя воссоздал ситуацию насколько смог, баг такой не наблюдается.
Ты же отладчиком в студии пользоваться умеешь? Надо поставить точки останова и пошагово пройтись по строчкам кода, отследить в окне переменных когда появляется это "сс" в структуре.
1
0 / 0 / 2
Регистрация: 10.11.2016
Сообщений: 27
28.12.2016, 22:00  [ТС] 6
Людвиг Бодмер, Извини, вправду была ошибка в другом методе. Теперь проблема решена
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2016, 22:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Генератор слов
Нужно зделать генератор слов на C++ или на Visual Basic с учётом правил граматики(не начинать слова...

Генератор слов по маске
Доброго времени суток, Уважаемые программисты! Есть ряд слов и цифр, допустим: Как...

Генератор слов из txt
Всем доброй ночи! Помогите решить проблему нновичку. У меня есть txt файл на сервере, мне нужно...

Генератор случайных слов
Именно слов, а не тарабарщины по типу x98hwro20jd это я нашёл и сам, как сделать. Собственно, есть...


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

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

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