Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фонетический разбор 
V
    Опции темы
Сый
Дата 16.3.2006, 21:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



 Нужен фонетический (по звукам) разбор слова (алгоритм). Сделал описание алфавита, как бы теперь лучше сделать сам разбор слова?

Код

ОТДЕЛ АБВ; 

ПЕР 
  Алфавит-: РЯД 33 ИЗ ЗНАК; 
  Азбука-: РЯД 33 ИЗ МНОЖ; 

ПОСТ 
  Гласный- = 1; 
  Согласный- = 2; 
  Звонкий- = 3; 
  Глухой- = 4; 
  Непарный- = 5; 
  Йотированный- = 6; 
  ВсегдаТвёрдый- = 7; 
  ВсегдаМягкий- = 8; 
  НейотирСмягчающий- = 9; 
  Беззвучный- = 10; 
  ТвёрдыйЗнак- = 11; 
  МягкийЗнак- = 12; 

ЗАДАЧА Пара-(Буква: УЗКЦЕЛ): УЗКЦЕЛ; 
УКАЗ 
  ВЫБРАТЬ Буква ИЗ 
    1: ВОЗВРАТ 16 
  | 2: ВОЗВРАТ 21 
  | 3: ВОЗВРАТ 11 
  | 4: ВОЗВРАТ 19 
  | 7: ВОЗВРАТ 25 
  | 8: ВОЗВРАТ 18 
  | 11: ВОЗВРАТ 3 
  | 16: ВОЗВРАТ 1 
  | 18: ВОЗВРАТ 8 
  | 19: ВОЗВРАТ 4 
  | 21: ВОЗВРАТ 2 
  | 25: ВОЗВРАТ 7 
  ИНАЧЕ ВОЗВРАТ -1 КОН 
КОН Пара; 

ЗАДАЧА Нейотированный-(Буква: УЗКЦЕЛ): УЗКЦЕЛ; 
УКАЗ 
  ВЫБРАТЬ Буква ИЗ 
    5: ВОЗВРАТ 30 
  | 6: ВОЗВРАТ 15 
  | 31: ВОЗВРАТ 20 
  | 32: ВОЗВРАТ 0 
  ИНАЧЕ ВОЗВРАТ -1 КОН 
КОН Нейотированный; 

ЗАДАЧА Номер-(Буква: ЗНАК): УЗКЦЕЛ; 
ПЕР 
  ч: УЗКЦЕЛ; 
УКАЗ 
  ОТ ч := 0 ДО 32 ВЫП 
    ЕСЛИ Буква = Алфавит[ч] ТО ВОЗВРАТ ч КОН 
  КОН; 
  ВОЗВРАТ -1 
КОН Номер; 

ЗАДАЧА Заполнить; 
УКАЗ 
  Алфавит[0] := "А";  Азбука[0] := {Гласный}; 
  Алфавит[1] := "Б";  Азбука[1] := {Согласный, Звонкий}; 
  Алфавит[2] := "В";  Азбука[2] := {Согласный, Звонкий}; 
  Алфавит[3] := "Г";  Азбука[3] := {Согласный, Звонкий}; 
  Алфавит[4] := "Д";  Азбука[4] := {Согласный, Звонкий}; 
  Алфавит[5] := "Е";  Азбука[5] := {Гласный, Йотированный}; 
  Алфавит[6] := "Ё";  Азбука[6] := {Гласный, Йотированный}; 
  Алфавит[7] := "Ж";  Азбука[7] := {Согласный, Звонкий, ВсегдаТвёрдый}; 
  Алфавит[8] := "З";  Азбука[8] := {Согласный, Звонкий}; 
  Алфавит[9] := "И";  Азбука[9] := {Гласный, НейотирСмягчающий}; 
  Алфавит[10] := "Й"; Азбука[10] := {Согласный, Звонкий, ВсегдаМягкий, Непарный}; 
  Алфавит[11] := "К"; Азбука[11] := {Согласный, Глухой}; 
  Алфавит[12] := "Л"; Азбука[12] := {Согласный, Звонкий, Непарный}; 
  Алфавит[13] := "М"; Азбука[13] := {Согласный, Звонкий, Непарный}; 
  Алфавит[14] := "Н"; Азбука[14] := {Согласный, Звонкий, Непарный}; 
  Алфавит[15] := "О"; Азбука[15] := {Гласный}; 
  Алфавит[16] := "П"; Азбука[16] := {Согласный, Глухой}; 
  Алфавит[17] := "Р"; Азбука[17] := {Согласный, Звонкий, Непарный}; 
  Алфавит[18] := "С"; Азбука[18] := {Согласный, Глухой}; 
  Алфавит[19] := "Т"; Азбука[19] := {Согласный, Глухой}; 
  Алфавит[20] := "У"; Азбука[20] := {Гласный}; 
  Алфавит[21] := "Ф"; Азбука[21] := {Согласный, Глухой}; 
  Алфавит[22] := "Х"; Азбука[22] := {Согласный, Глухой, Непарный}; 
  Алфавит[23] := "Ц"; Азбука[23] := {Согласный, Глухой, ВсегдаТвёрдый, Непарный}; 
  Алфавит[24] := "Ч"; Азбука[24] := {Согласный, Глухой, ВсегдаМягкий, Непарный}; 
  Алфавит[25] := "Ш"; Азбука[25] := {Согласный, Глухой, ВсегдаТвёрдый}; 
  Алфавит[26] := "Щ"; Азбука[26] := {Согласный, Глухой, ВсегдаМягкий, Непарный}; 
  Алфавит[27] := "Ъ"; Азбука[27] := {Беззвучный, ТвёрдыйЗнак}; 
  Алфавит[28] := "Ы"; Азбука[28] := {Гласный}; 
  Алфавит[29] := "Ь"; Азбука[29] := {Беззвучный, МягкийЗнак}; 
  Алфавит[30] := "Э"; Азбука[30] := {Гласный}; 
  Алфавит[31] := "Ю"; Азбука[31] := {Гласный, Йотированный}; 
  Алфавит[32] := "Я"; Азбука[32] := {Гласный, Йотированный} 
КОН Заполнить; 

УКАЗ 
  Заполнить 

КОН АБВ.
 

Это сообщение отредактировал(а) Сый - 18.10.2006, 13:45
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
DRUID3
Дата 16.3.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 20.6.2005
Где: Kyyiv

Репутация: 2
Всего: 9



Сорри за off top, но это у Вас код на "Глаголе"?


--------------------
Every time if you use Linux, you are joined to the communism...
практика - критерий истины ... отделенной от нас пропастью субъективного восприятия...
PM MAIL WWW Skype   Вверх
Сый
Дата 16.3.2006, 22:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Естественно smile
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Сый
Дата 16.3.2006, 23:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Я только на нём сейчас и пишу.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Сый
Дата 17.3.2006, 17:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Задачка для перевода буквы в цифру:
Код

ЗАДАЧА ОпределитьБукву(Буква: ЗНАК): ЦЕЛ;
УКАЗ
  ВЫБРАТЬ Буква ИЗ
    "А": ВОЗВРАт 0  | "Б": ВОЗВРАТ 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
  ИНАЧЕ КОН;
КОН ОпределитьБукву;

--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
sergejzr
Дата 17.3.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



А может кто нибудь напишет статейку - краткий обзор языка?
[offtop]
Хм.. на Си удобнее

Код

int cifra(char bukva)
{
  return bukva-'0';
}


[/offtop]


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Сый
Дата 17.3.2006, 19:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



> А может кто нибудь напишет статейку - краткий обзор языка?
С удовольствием бы написал, да вот описание языка, думаю, настолько полно, подробно и всеописывающе, что в качестве краткого обзора могу только цитаты привести.

> int cifra(char bukva)
> {
> return bukva-'0';
> }
Язык C, к сожалению, почти не знаю, но могу предположить, что код не правильный. Можно было бы просто преобразовать знак в число и отнять 0BH+1, чтобы получить номер знака, но буква Ё ведь стоит за пределами алфавита в таблице символов, поэтому я решил, что удобнее и красивее будет выбрать букву из алфавита.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Сый
Дата 17.3.2006, 19:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Плюс к тому нужно приводить буквы к одному регистру в этой же задаче, Ё выбирать отдельно, игнорируя преобразование в число, потом к каждому следующему после Е числу прибавлять 1, чтобы оставить место для Ё... Вобщем, кода не меньше будет.
Вот, кстати, реализация простенькой таблицы символов на Глаголе: http://rus.jino-net.ru/viewtopic.php?t=189

Это сообщение отредактировал(а) Сый - 17.3.2006, 19:30
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Сый
Дата 18.3.2006, 22:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Что, никто не в состоянии составить алгоритм, описывающий взаимодействия букв/звуков в слове?
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
sergejzr
Дата 18.3.2006, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Модератор: Сый, поднимать темы запрещено! Кроме вас здесь ищет помощи ещё куча людей и у всех равные шансы!



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
SoWa
Дата 18.3.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



А как ты определишь, когда надо [е], а когда [йо]
К примеру (Моего) и (Мое)


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Сый
Дата 18.3.2006, 23:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Ладно, про темы понял.

>А как ты определишь, когда надо [е], а когда [йо]
>К примеру (Моего) и (Мое)
Я считаю, что буква Ё должна употребляться постоянно, а её замену буквой Е считаю неприемлемой.
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Сый
Дата 18.10.2006, 13:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Вот код этой программы:
Код
ОТДЕЛ Разбор+; 
ИСПОЛЬЗУЕТ АБВ, Знак ИЗ "...\Отделы\Иное\", Вывод ИЗ "...\Отделы\Обмен\", Параметр ИЗ "...\Отделы\Обмен\"; 

ПЕР 
  Слово: РЯД 30 ИЗ ЗНАК; 
  Букв, Звуков: УЗКЦЕЛ; 

ЗАДАЧА ВывестиЗвук(Звук: ЗНАК; Ударный, Мягкий: КЛЮЧ); 
ПЕР 
  МинЦепь: ЦЕПЬ[1]; 
УКАЗ 
  МинЦепь[0] := Звук; 
  Вывод.Цепь(МинЦепь); ЕСЛИ Мягкий ТО Вывод.Цепь("'") КОН 
КОН ВывестиЗвук; 

ЗАДАЧА Строка(Буква, Звук: ЗНАК; Гласный, Ударный, Мягкий, Глухой, Непарный: КЛЮЧ; Пара: ЗНАК); 
ПЕР 
  МинЦепь: ЦЕПЬ[1]; 
УКАЗ 
  МинЦепь[0] := Буква; 
  ЕСЛИ Гласный ТО 
    Вывод.Цепь(МинЦепь); МинЦепь[0] := Звук; Вывод.Цепь(" ["); Вывод.Цепь(МинЦепь); 
    ЕСЛИ Ударный ТО Вывод.Цепь("`] - гласный, ударный.^") ИНАЧЕ Вывод.Цепь("] - гласный.^") КОН 
  ИНАЧЕ 
    Вывод.Цепь(МинЦепь); Вывод.Цепь(" ["); МинЦепь[0] := Звук; Вывод.Цепь(МинЦепь); 
    ЕСЛИ Мягкий ТО Вывод.Цепь("'] - согласный, мягкий, ") ИНАЧЕ Вывод.Цепь("] - согласный, твёрдый, ") КОН; 
    ЕСЛИ Глухой ТО Вывод.Цепь("глухой, ") ИНАЧЕ Вывод.Цепь("звонкий, ") КОН; 
    ЕСЛИ Непарный ТО 
      Вывод.Цепь("непарный.^") ИНАЧЕ Вывод.Цепь("парный ("); 
      Вывод.Цепь(МинЦепь); Вывод.Цепь("/"); МинЦепь[0] := Пара; Вывод.Цепь(МинЦепь); Вывод.Цепь(").^") 
    КОН 
  КОН 
КОН Строка; 

ЗАДАЧА Пустая(Буква: ЗНАК); 
ПЕР 
  МинЦепь: ЦЕПЬ[1]; 
УКАЗ 
  МинЦепь[0] := Буква; 
  Вывод.Цепь(МинЦепь); Вывод.Цепь(" [-]^"); 
КОН Пустая; 

ЗАДАЧА ОпределитьЗвук(ПредБуква, Буква, СледБуква: ЗНАК); 
УКАЗ 
  ЕСЛИ АБВ.Гласный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
    ЕСЛИ НЕ (АБВ.Йотированный В АБВ.Азбука[АБВ.Номер(Буква)]) ТО 
      ЕСЛИ ПредБуква # 0X ТО 
        ЕСЛИ (АБВ.Номер(Буква) = АБВ.Номер("И")) И (АБВ.ВсегдаТвёрдый В АБВ.Азбука[АБВ.Номер(ПредБуква)]) ТО 
          ВывестиЗвук("Ы", ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков) 
        ИНАЧЕ 
          ВывестиЗвук(Буква, ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков) 
        КОН 
      ИНАЧЕ 
        ВывестиЗвук(Буква, ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков) 
      КОН 
    ИНАЧЕ 
      ЕСЛИ ПредБуква # 0X ТО 
        ЕСЛИ АБВ.Согласный В АБВ.Азбука[АБВ.Номер(ПредБуква)] ТО 
          ВывестиЗвук(АБВ.Алфавит[АБВ.Нейотированный(АБВ.Номер(Буква))], ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков) 
        ИНАЧЕ 
          ВывестиЗвук("Й", ОТКЛ, ВКЛ); 
          ВывестиЗвук(АБВ.Алфавит[АБВ.Нейотированный(АБВ.Номер(Буква))], ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков, 2) 
        КОН 
      ИНАЧЕ 
        ВывестиЗвук("Й", ОТКЛ, ВКЛ); 
        ВывестиЗвук(АБВ.Алфавит[АБВ.Нейотированный(АБВ.Номер(Буква))], ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков, 2) 
      КОН 
    КОН 
  АЕСЛИ АБВ.Согласный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
    ЕСЛИ АБВ.ВсегдаТвёрдый В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
      ВывестиЗвук(Буква, ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков) 
    АЕСЛИ АБВ.ВсегдаМягкий В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
      ВывестиЗвук(Буква, ОТКЛ, ВКЛ); УВЕЛИЧИТЬ(Звуков) 
    ИНАЧЕ 
      ЕСЛИ СледБуква # 0X ТО 
        ЕСЛИ (АБВ.Йотированный В АБВ.Азбука[АБВ.Номер(СледБуква)]) ИЛИ (АБВ.Номер(СледБуква) = АБВ.Номер("Ь")) ИЛИ (АБВ.НейотирСмягчающий В АБВ.Азбука[АБВ.Номер(СледБуква)]) ТО 
          ВывестиЗвук(Буква, ОТКЛ, ВКЛ); УВЕЛИЧИТЬ(Звуков) 
        ИНАЧЕ 
          ВывестиЗвук(Буква, ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков) 
        КОН 
      ИНАЧЕ 
        ВывестиЗвук(Буква, ОТКЛ, ОТКЛ); УВЕЛИЧИТЬ(Звуков) 
      КОН 
    КОН 
  КОН; 
  УВЕЛИЧИТЬ(Букв) 
КОН ОпределитьЗвук; 

ЗАДАЧА Определить(ПредБуква, Буква, СледБуква: ЗНАК); 
УКАЗ 
  ЕСЛИ АБВ.Гласный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
    ЕСЛИ НЕ (АБВ.Йотированный В АБВ.Азбука[АБВ.Номер(Буква)]) ТО 
      ЕСЛИ ПредБуква # 0X ТО 
        ЕСЛИ (АБВ.Номер(Буква) = АБВ.Номер("И")) И (АБВ.ВсегдаТвёрдый В АБВ.Азбука[АБВ.Номер(ПредБуква)]) ТО 
          Строка(Буква, "Ы", ВКЛ, ОТКЛ, ОТКЛ, ОТКЛ, ОТКЛ, 0X) 
        ИНАЧЕ 
          Строка(Буква, Буква, ВКЛ, ОТКЛ, ОТКЛ, ОТКЛ, ОТКЛ, 0X) 
        КОН 
      ИНАЧЕ 
        Строка(Буква, Буква, ВКЛ, ОТКЛ, ОТКЛ, ОТКЛ, ОТКЛ, 0X) 
      КОН 
    ИНАЧЕ 
      ЕСЛИ ПредБуква # 0X ТО 
        ЕСЛИ АБВ.Согласный В АБВ.Азбука[АБВ.Номер(ПредБуква)] ТО 
          Строка(Буква, АБВ.Алфавит[АБВ.Нейотированный(АБВ.Номер(Буква))], ВКЛ, ОТКЛ, ОТКЛ, ОТКЛ, ОТКЛ, 0X) 
        ИНАЧЕ 
          Строка(Буква, "Й", ОТКЛ, ОТКЛ, ВКЛ, ОТКЛ, ВКЛ, 0X); 
          Строка(" ", АБВ.Алфавит[АБВ.Нейотированный(АБВ.Номер(Буква))], ВКЛ, ОТКЛ, ОТКЛ, ОТКЛ, ОТКЛ, 0X) 
        КОН 
      ИНАЧЕ 
        Строка(Буква, "Й", ОТКЛ, ОТКЛ, ВКЛ, ОТКЛ, ВКЛ, 0X); 
        Строка(" ", АБВ.Алфавит[АБВ.Нейотированный(АБВ.Номер(Буква))], ВКЛ, ОТКЛ, ОТКЛ, ОТКЛ, ОТКЛ, 0X) 
      КОН 
    КОН 
  АЕСЛИ АБВ.Согласный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
    ЕСЛИ АБВ.ВсегдаТвёрдый В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
      ЕСЛИ АБВ.Непарный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
        Строка(Буква, Буква, ОТКЛ, ОТКЛ, ОТКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ВКЛ, 0X) 
      ИНАЧЕ 
        Строка(Буква, Буква, ОТКЛ, ОТКЛ, ОТКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ОТКЛ, АБВ.Алфавит[АБВ.Пара(АБВ.Номер(Буква))]) 
      КОН 
    АЕСЛИ АБВ.ВсегдаМягкий В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
      ЕСЛИ АБВ.Непарный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
        Строка(Буква, Буква, ОТКЛ, ОТКЛ, ВКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ВКЛ, 0X) 
      ИНАЧЕ 
        Строка(Буква, Буква, ОТКЛ, ОТКЛ, ВКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ОТКЛ, АБВ.Алфавит[АБВ.Пара(АБВ.Номер(Буква))]) 
      КОН 
    ИНАЧЕ 
      ЕСЛИ СледБуква # 0X ТО 
        ЕСЛИ (АБВ.Йотированный В АБВ.Азбука[АБВ.Номер(СледБуква)]) ИЛИ (АБВ.Номер(СледБуква) = АБВ.Номер("Ь")) ИЛИ (АБВ.НейотирСмягчающий В АБВ.Азбука[АБВ.Номер(СледБуква)]) ТО 
          ЕСЛИ АБВ.Непарный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
            Строка(Буква, Буква, ОТКЛ, ОТКЛ, ВКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ВКЛ, 0X) 
          ИНАЧЕ 
            Строка(Буква, Буква, ОТКЛ, ОТКЛ, ВКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ОТКЛ, АБВ.Алфавит[АБВ.Пара(АБВ.Номер(Буква))]) 
          КОН 
        ИНАЧЕ 
          ЕСЛИ АБВ.Непарный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
            Строка(Буква, Буква, ОТКЛ, ОТКЛ, ОТКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ВКЛ, 0X) 
          ИНАЧЕ 
            Строка(Буква, Буква, ОТКЛ, ОТКЛ, ОТКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ОТКЛ, АБВ.Алфавит[АБВ.Пара(АБВ.Номер(Буква))]) 
          КОН 
        КОН 
      ИНАЧЕ 
        ЕСЛИ АБВ.Непарный В АБВ.Азбука[АБВ.Номер(Буква)] ТО 
          Строка(Буква, Буква, ОТКЛ, ОТКЛ, ОТКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ВКЛ, 0X) 
        ИНАЧЕ 
          Строка(Буква, Буква, ОТКЛ, ОТКЛ, ОТКЛ, АБВ.Глухой В АБВ.Азбука[АБВ.Номер(Буква)], ОТКЛ, АБВ.Алфавит[АБВ.Пара(АБВ.Номер(Буква))]) 
        КОН 
      КОН 
    КОН 
  ИНАЧЕ 
    Пустая(Буква) 
  КОН 
КОН Определить; 

ЗАДАЧА Верхушка; 
ПЕР 
  Счётчик: УЗКЦЕЛ; 
УКАЗ 
  Вывод.Цепь(Слово); 
  Вывод.Цепь(" - ["); 
  ОпределитьЗвук(0X, Знак.ВЗагл(Слово[0]), Знак.ВЗагл(Слово[1])); 
  ОТ Счётчик := 1 ДО ДЛИНА(Слово)-2 ВЫП 
    ОпределитьЗвук(Знак.ВЗагл(Слово[Счётчик-1]), Знак.ВЗагл(Слово[Счётчик]), Знак.ВЗагл(Слово[Счётчик+1])) 
  КОН; 
  ОпределитьЗвук(Знак.ВЗагл(Слово[ДЛИНА(Слово)-2]), Знак.ВЗагл(Слово[ДЛИНА(Слово)-1]), 0X); 
  Вывод.Цепь("];^") 
КОН Верхушка; 

ЗАДАЧА Середина; 
ПЕР 
  Счётчик: УЗКЦЕЛ; 
УКАЗ 
  Определить(0X, Знак.ВЗагл(Слово[0]), Знак.ВЗагл(Слово[1])); 
  ОТ Счётчик := 1 ДО ДЛИНА(Слово)-2 ВЫП 
    Определить(Знак.ВЗагл(Слово[Счётчик-1]), Знак.ВЗагл(Слово[Счётчик]), Знак.ВЗагл(Слово[Счётчик+1])) 
  КОН; 
  Определить(Знак.ВЗагл(Слово[ДЛИНА(Слово)-2]), Знак.ВЗагл(Слово[ДЛИНА(Слово)-1]), 0X) 
КОН Середина; 

ЗАДАЧА СклонениеЧ(Число: УЗКЦЕЛ; сл1-, сл2-, сл3-: РЯД ИЗ ЗНАК); 
УКАЗ 
  Вывод.ЧЦел("%d ", Число, 0, 0, 0); 
  ЕСЛИ (Число ОСТАТОК 100 >= 5) И (Число ОСТАТОК 100 <= 20) ТО Вывод.Цепь(сл3) 
  ИНАЧЕ 
    ЕСЛИ Число ОСТАТОК 10 = 1 ТО Вывод.Цепь(сл1) 
    АЕСЛИ (Число ОСТАТОК 10 >= 2) И (Число ОСТАТОК 10 <= 4) ТО Вывод.Цепь(сл2) 
    ИНАЧЕ Вывод.Цепь(сл3) КОН 
  КОН 
КОН СклонениеЧ; 

ЗАДАЧА Конец; 
УКАЗ 
  Вывод.Цепь("----------^"); 
  СклонениеЧ(Букв, "буква", "буквы", "букв"); Вывод.Цепь(", "); 
  СклонениеЧ(Звуков, "звук", "звука", "звуков"); Вывод.Цепь(".") 
КОН Конец; 

ЗАДАЧА Проверка; 
ПЕР 
  Счётчик: УЗКЦЕЛ; 
УКАЗ 
  ЕСЛИ ДЛИНА(Слово) <= 0 ТО Вывод.Цепь("Не указано слово."); СТОП(0) 
  АЕСЛИ ДЛИНА(Слово) < 2 ТО Вывод.Цепь("Слишком короткое слово."); СТОП(0) 
  ИНАЧЕ 
    ОТ Счётчик := 0 ДО ДЛИНА(Слово)-1 ВЫП 
      ЕСЛИ АБВ.Номер(Знак.ВЗагл(Слово[Счётчик])) = -1 ТО Вывод.Цепь("Слово содержит знаки, не являющиеся русскими буквами."); СТОП(0) КОН 
    КОН 
  КОН 
КОН Проверка; 

УКАЗ 
  Параметр.Текст(1, Слово); Проверка; 
  Верхушка; Середина; Конец 

КОН Разбор.


Это сообщение отредактировал(а) Сый - 15.11.2006, 09:25
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
Vaulter
Дата 24.10.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



Сый, а что она делает?


--------------------
PM MAIL WWW ICQ   Вверх
Сый
Дата 14.11.2006, 10:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 23.1.2006

Репутация: 2
Всего: 3



Пример разбора слова "Разбираемое"
Цитата
D:\Глагол\Приложения\Свои>Разбор Разбираемое
Разбираемое - [РАЗБ'ИРАЙ'ЭМОЙ'Э];
Р [Р] - согласный, твёрдый, звонкий, непарный.
А [А] - гласный.
З [З] - согласный, твёрдый, звонкий, парный (З/С).
Б [Б'] - согласный, твёрдый, звонкий, парный (Б/П).
И [И] - гласный.
Р [Р] - согласный, твёрдый, звонкий, непарный.
А [А] - гласный.
Е [Й'] - согласный, мягкий, звонкий, непарный.
  [Э] - гласный.
М [М] - согласный, твёрдый, звонкий, непарный.
О [О] - гласный.
Е [Й'] - согласный, мягкий, звонкий, непарный.
  [Э] - гласный.
----------
11 букв, 13 звуков.

Такая программа может использоваться, например, при преобразовании русского текста в речь (компьютером).

Это сообщение отредактировал(а) Сый - 15.11.2006, 09:26
--------------------
 Язык программирования, родственный языкам Паскаль и Оберон, использующий русские служебные слова - Глагол: http://glagol.nad.ru 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.