Если это задача про экспертные системы, то тут просто готовым кодом не отделаешься. А, собственно, по поводу принципа - ты почти угадал. Задача на продукционные правила, т.е. правила виды "ЕСЛИ..ТО". Вот только решаеть ее будет чуть посложнее, чем написать фиксированный код.
Для начала тебе надо реализовать базу знаний, в которой эти продукционные правила храняться. Это довольно просто, можно воспользоваться готовыми классами, получится что-то вида:
Код:
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;
* Здесь приведена только часть для зранения, доп. методы и поля добавяться по мере надобности.
Потом тебе надо будет написать машину логического вывода, которая будет брать правило и пытаться его вычислить. Пользователя она должна спрашивать только в том случае, если значение переменной не может быть высислено автоматически через правила. Код тут приводить не получится, т.к. там много писать придется.
Ну а интерфейс - это дело десятое.