Показать сообщение отдельно
  #3  
Старый 24.05.2013, 07:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если это задача про экспертные системы, то тут просто готовым кодом не отделаешься. А, собственно, по поводу принципа - ты почти угадал. Задача на продукционные правила, т.е. правила виды "ЕСЛИ..ТО". Вот только решаеть ее будет чуть посложнее, чем написать фиксированный код.
Для начала тебе надо реализовать базу знаний, в которой эти продукционные правила храняться. Это довольно просто, можно воспользоваться готовыми классами, получится что-то вида:
Код:
type
  TProductionRule = class
  private
    FIfClause : TStringList;
    FThenClause : TStringList;
  public
    property IfCount : Integer read GetIfCount;
    property ThenCount : Integer read GetThenCount;
    property IfClauseName[Index : Integer] : String read GetIfClauseName;
    property IfClauseValue[Index : Integer] : String read GetIfClauseValue;
    property ThenClauseName[Index : Integer] : String read GetThenClauseName;
    property ThenClauseValue[Index : Integer] : String read GetThenClauseValue;
  end;
* Здесь приведена только часть для зранения, доп. методы и поля добавяться по мере надобности.

Потом тебе надо будет написать машину логического вывода, которая будет брать правило и пытаться его вычислить. Пользователя она должна спрашивать только в том случае, если значение переменной не может быть высислено автоматически через правила. Код тут приводить не получится, т.к. там много писать придется.

Ну а интерфейс - это дело десятое.
Ответить с цитированием