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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2010, 22:44   #1
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию рекурсия

Проверка формулы.

В строке записана формула вида:
<формула>:=<цифра>/<буква>/<знак>(<формула>)
<знак>::= +/-/*
<цифра>::= 0/1/2/3/4/5/6/7/8/9
<буква>::= a..z
Проверить правельность формулы
2-формула
a-формула
+(2)-формула
+(-(b))-формула ...

Код:
Type TL=(znak,tsifra,sko,skz,bukv);
 var s,a:string;
 i:integer;
 function chit:TL;
  begin
    If s[i]='(' then
    result:=sko;
    If s[i]=')' then
    result:=skz;
    If (s[i]='+')or(s[i]='-')or(s[i]='*') then
    result:=znak;
    If s[i] in ['0'..'9'] then
     result:=tsifra;
     If (s[i] in ['A'..'Z'])or(s[i] in ['a'..'z']) then
     result:=bukv;
     i:=i+1;

  end;
  procedure formula;
   var m:TL;
   begin
    m:=chit();
    If m=tsifra then
      a:='верно'
     else
      begin
      If m=bukv then
      a:='верно'
      else
       begin
         If m=znak then
          begin
            If chit()=sko then
             begin
               formula ;
                If chit()=skz then
                 a:='Верно'
                 else
             a:='неверно';
               end
               else
          a:='неверно';
          end
          else
          a:='неверно';
       end
    end;
   end;
procedure TForm2.Button1Click(Sender: TObject);
begin
 i:=1;
 s:=edit1.Text;
  formula;
  label1.Caption:='Результат: '+#13+a;
end;

end.
Программа работает верно, но если после правельно записанной формулы писать все что угодно то все равно выводит верный ответ. Помогите плиз доработать прогу.
shelest вне форума Ответить с цитированием
Старый 10.04.2010, 23:06   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

структура программы должна быть примерно такой
Код:
if(условие) begin
 ...операции
  else  if(условие)  begin
    ...операции
    else if(условие) begin
        ...операции
           else begin
              ...операции
           end;
    end;
   end;
end;
Skype: CODERua

Последний раз редактировалось [CODER]; 10.04.2010 в 23:09.
[CODER] вне форума Ответить с цитированием
Старый 10.04.2010, 23:08   #3
UnderwooD
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 15
По умолчанию

Совсем недавно написал свой собственный парсер подобных выражений.
Ссылка на исходник здесь: http://depositfiles.com/files/a1kdjzce9

Будут вопросы - пиши.
UnderwooD вне форума Ответить с цитированием
Старый 14.04.2010, 10:12   #4
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

тема всё еще актуальна
shelest вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия seeton Помощь студентам 0 08.12.2009 17:41
Рекурсия Claster Помощь студентам 7 24.09.2008 20:52
Рекурсия vitekbest Помощь студентам 1 30.05.2008 22:22
Рекурсия Pravednik Помощь студентам 3 21.01.2008 14:18