Ghost, вводи табуляцию! Твой код сложно читать.
Конструкцию
PHP код:
![Выделить весь код](images/misc/selectcode.png)
//проверяем первый символ
if s[1]='(' then
kolvoskobok:=1 else begin
kolvoskobok:=0;
if ( not (s[1] in ['a'..'z', '!', '0', '1']) ) then begin
proverka:=1;
exit;
end; // if ( not (s[1] in ...
end;// else if s[1]='('
я не понимаю.
Мы первым условием смотрим на s[1] зачем проверка на другие символы?
Ладно, если работает, то пусть будет.
А вот это что?
PHP код:
![Выделить весь код](images/misc/selectcode.png)
//проверяем последний символ
if s[length(s)] in ['&','+','-','~','@','|','/','!','('] then begin proverka:=length(s); exit; end;
proverka:=0;
В любом случае после выполнения этого кода проверка будет равно нулю!
Или exit - безусловный выход из процедуры? Это знаете ли моветон. (Я не спорю, есть случаи когда Exit применим, но это явно не тот случай)
Блок
//проверяем оставшиеся символы
переписать с использованием конструкции
case of
Где формулировка задачи?
Где возможные варианты написания формул? (Интересно наличие там символов '&',''~','@','|', а умножение кстати где?)
Это отправная точка, из-за чего весь сыр-бор собственно.
ИМХО
можно попробовать получить строение формулы, и сравнить с известными конструкциями.
Как дальше делать по шагам, не скажу
![Smile](images/smilies/new/smile.gif)