Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
| antonioSP |
26.03.2006 14:54
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: 0 |
Помогите решить задачу на рекурсию. В строке записанно выражение следующего вида:
<формула>::=<индетификатор>/(<формула><знак><формула>) <знак>::= +/-/* <индетификатор>::=<буква>/<буква><цифра> <цифра>::=0/1/2/3/4/5/6/7/8/9 Проверить правильность сочетания. Не получается процедура проверки на истинность, может кто подскажет как это сделать. Вот мои наработки процедура ввода (скорее всего и там косяк есть). Код procedure TForm1.Button1Click(Sender: TObject); type tl=(form,buk,sko,skz,znak,cif); var a:string[20]; i:integer; begin i:=1; function read(var s:string; var i:integer):tl; begin if s[i] in ['A'..'z'] then result:=buk; if s[i] in ['0'..'9'] then result:=cif else case s[i] of '+':result:=znak; '-':result:=znak; '(':result:=sko; ')':result:=skz; else result:=err; end; i:=i+1; end; end; |
hardcase Честно говоря, у тебя написано не очень правильно.... 26.03.2006 16:50
antonioSP Я вот тут написал свой вариант, он понимает вроде ... 26.03.2006 20:29
hardcase в коде разобраться - нереально :-))
погоняй лучше ... 26.03.2006 20:53![]() ![]() |
|
Текстовая версия | 10.12.2025 22:11 |