Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2008, 12:48   #1
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию Нужна помощь с алгоритмом расстановки ударений в словах, в предложениях.

Всем привет! Подскажите пожалуйста какой нить алгоритм по которому в веденном предложении можно было б реализовать автоматическую расстановку ударений.
Я сделал процедуру с помошью которой можно ставить после кажого гласного в словах знак ("), который показывает ударение после гласной. Но таким образом, он ставит этот знак после всех гласных, а мне нужно чтобы этот знак был только в последнем слоге (потому что в нашем языке, ударение на многих словах падает на последний слог).
Как можно написать условие чтоб программа ставила знак именно после последней гласной в каком нибудь слове?

Последний раз редактировалось Gauss; 14.04.2008 в 13:18.
Gauss вне форума Ответить с цитированием
Старый 14.04.2008, 14:00   #2
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Считать количество гласных в слове и ставить после последней (или предпоследней)знак "
prizrak1390 вне форума Ответить с цитированием
Старый 14.04.2008, 14:16   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Считать количество гласных в слове и ставить после последней (или предпоследней)знак "
Да ну?
Поставь правильно ударение в слове "Зарево".
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2008, 14:24   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Стилет, читай внимательней, в "его языке", то есть в азейбарджанском. А что мешает поставить знак * после последней буквы О?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 14.04.2008, 14:39   #5
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Цитата:
Считать количество гласных в слове и ставить после последней (или предпоследней)знак "
Да, это верно.
Но у меня как то нехорошо получается, ммммм... немогу ясно выразить мысль.
Значит так, у меня же там символы в виде чаров идут от букв нашего языка, и мне надо выбрать коды тех символов которые отвечают за гласные, и в виде констант их в самом начале описать, а там вот у меня ошибка и выходит((
Коды идут как WideChar и он при их описании ошибку дает.

Последний раз редактировалось Gauss; 14.04.2008 в 14:43.
Gauss вне форума Ответить с цитированием
Старый 14.04.2008, 14:54   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Давай код, будем смотреть.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 14.04.2008, 14:59   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
"его языке"
А-а-а. Дык тут нужно в любом случае правилам машину научить
Цитата:
азейбарджанском
азербайджанском
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.04.2008, 15:07   #8
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Это код по которому наши буквы отображаются в международном фонетическом алфавите (я принял 1 букву как за отдельную фонему, короче в общем случе совпадает всё).
Код:
 {Хочится тут ввиде констан отобразить отдельно наши гласные, типа этого}
Const
Glasn: Set of WideChar=[#252,#101,#117,#105,#111,#246,#97,#305,#601];{но так не получается}
{я хочу их тут объявить, а потом сказать что типа если в конце слова какой то из них встречается то ударение на нем должно быть}
var
  DM: TDM;
implementation

uses MainUnit;

{$R *.dfm}

function TDM.sr(s:WideChar): string;
begin
  case s of
 {Коды для азербайдж. букв с учетом компонентов TNT-Unicode}

 {Малые буквы}
#113: sr:='g';
#252: sr:='y';
#101: sr:='e';
#114: sr:='r';
#116: sr:='t';
#121: sr:='j';
#117: sr:='u';
#105: sr:='i';
#111: sr:='o';
#112: sr:='p';
#246: sr:='2';
#287: sr:='G';
#97: sr:='a';
#115: sr:='s';
#100: sr:='d';
#102: sr:='f';
#103: sr:='gj';
#104: sr:='h';
#106: sr:='Z';
#107: sr:='k';
#108: sr:='l';
#305: sr:='1';
#601: sr:='@';
#122: sr:='z';
#120: sr:='x';
#99: sr:='dZ';
#118: sr:='v';
#98: sr:='b';
#110: sr:='n';
#109: sr:='m';
#231: sr:='tS';
#351: sr:='S';

 {Большие буквы}
#81: sr:='g|';
#220: sr:='y|';
#69: sr:='e|';
#82: sr:='r|';
#84: sr:='t|';
#89: sr:='j|';
#85: sr:='u|';
#304: sr:='i|';
#79: sr:='o|';
#80: sr:='p|';
#214: sr:='2|';
#286: sr:='G|';
#65: sr:='a|';
#83: sr:='s|';
#68: sr:='d|';
#70: sr:='f|';
#71: sr:='gj|';
#72: sr:='h|';
#74: sr:='Z|';
#75: sr:='k|';
#76: sr:='l|';
#73: sr:='1|';
#399: sr:='@|';
#90: sr:='z|';
#88: sr:='x|';
#67: sr:='dZ|';
#86: sr:='v|';
#66: sr:='b|';
#78: sr:='n|';
#77: sr:='m|';
#199: sr:='tS|';
#350: sr:='S|';

 {Знаки препинания}
#46: sr:='.';
#44: sr:=',';
#33: sr:='!';
#63: sr:='?';
#59: sr:=';';
#58: sr:=':';
#34: sr:='"';
#42: sr:='*';
     else sr:=s;
  end;
end;
procedure TDM.Sampa;
var
 temp: wideString;
    i: byte;
begin
    temp := MainForm.memo1.Text;
  for i:=1 to length(temp) do
    begin
   MainForm.Memo2.Text := MainForm.Memo2.Text + sr(temp[i]);
    end;
end;

Последний раз редактировалось Gauss; 14.04.2008 в 15:13.
Gauss вне форума Ответить с цитированием
Старый 14.04.2008, 15:17   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
азербайджанском
блин, так и знал, что неправильно напишу )

Цитата:
Glasn: Set of WideChar=[#252,#101,#117,#105,#111,#246,#97,# 305,#601];{но так не получается}
Я бы вместо множества массив сделал.

Знак # дает понять компилятору что это строка, в массиве он не нужен.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 14.04.2008 в 15:22.
mutabor вне форума Ответить с цитированием
Старый 14.04.2008, 15:23   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Gauss, а не проще Вам вместо этого страшного case'а объявить несколько массивов с флажками - для гласных, для согласных, для строк, которые Вы в case пребираете. Вам повезло, насколько я понял, самый большой индекс - всего 601.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прога исправляющая маленькую букву в новом предложении. Миха_М Общие вопросы Delphi 8 11.03.2008 10:23
проверить правильность расстановки операторов begin и end Тёмка Помощь студентам 1 10.12.2007 13:07
Нужна помощь!!! Anil Помощь студентам 0 04.12.2007 17:32
В введенном предложении удалить все повторяющиеся слова Алена Помощь студентам 5 21.11.2007 14:12
Вопрос по организации поиска и расстановки меток Melifaro Компоненты Delphi 4 01.11.2007 09:53