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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2013, 11:21   #1
_Katya_
Новичок
Джуниор
 
Регистрация: 30.05.2013
Сообщений: 1
Радость ООП с++

Мальчики, учусь на МехМате. Для сдачи зачёта по ООП необходимо написать последнюю программу:
Задание: полиморфизм

Указание: во всех задачах ввод исходных данных необходимо производить из текстовых файлов. Ошибки ввода и неправильного формата входных данных необходимо обрабатывать при помощи исключений.

Программа на языке логического программирования состоит из следующих конструкций: 1. Факт, утверждающий истинность терма с именем x. 2. Правило, утверждающее истинность терма с именем x, если истинны термы y1, y2, ... 3. Операция ввода, запрашивающая истинность заданного терма x у пользователя. Все правила для одного терма x объединены дизъюнкицией и применяются в порядке их появления в программе. Необходимо реализовать машину вывода, проверяющую истинность заданного терма x или обнаруживающую зацикливание в результате применения заданного набора конструкций. В процессе доказательства необходимо выводить информацию о применяемых конструкциях.

Необходимо использовать полиморфизм, базовый класс, от него 3 производных класса(факт, правило, ввод), и виртуальные функции с их применением в зависимости от поступающих данных.

Всё остальные задачи сделала, а здесь даже не знаю как подступиться к этому заданию, мне бы хоть идею, примерное описание как это должно выглядеть. А если у кого есть время и желание и кто - нибудь напишет хоть примерный код, буду безмерно благодарна)))
_Katya_ вне форума Ответить с цитированием
Старый 30.05.2013, 11:37   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

укажите цену и сроки
или
выкладывайте наработки
rrrFer вне форума Ответить с цитированием
Старый 30.05.2013, 12:11   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Всё остальные задачи сделала, а здесь даже не знаю как подступиться к этому заданию, мне бы хоть идею, примерное описание как это должно выглядеть.
Наивный вариант (в реальности используется алгоритм резолюции, можете попробовать реализовать его). Терм содержит список конструкций. При проверке истинности терма проверяется его наличие в стеке выводимых термов; если он там есть, диагностируется зацикливание. если его там нет, то он кладётся в этот стек, после чего последовательно оценивается каждая конструкция (вызывается виртуальный метод evaluate).
Для (1) evaluate возвращает true. Для (3) evaluate запрашивает значение у пользователя (возможно, сохраняя его - задание в этой части не вполне чётко) и возвращает результирующее значение. Для (2) evaluate запрашивает последовательно истинность термов y1, y2, ..., yn, пока не получит значение false (тогда возвращает undefined), либо пока не дойдёт до конца списка термов (тогда возвращает true). Если очередной вызов evaluate возвращает true или false, это принимается значением терма (гипотеза непротиворечивости мира), и сохраняется - по крайней мере, до конца текущего вычисления.
Если список конструкций для терма исчерпан (в частности, если с термом не ассоциировано вообще ни одной конструкции, либо оценки всех конструкций вернули undefined), возможны три модели поведения. Первая, простейшая: сообщить об ошибке (невозможности дать ответ). Вторая, гипотеза замкнутости мира: сделать вывод о ложности терма. Третья, адаптивная: принудительно ассоциировать с термом конструкцию (3).

Последний раз редактировалось Abstraction; 30.05.2013 в 12:13.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ООП на С++ dimys1237 Общие вопросы C/C++ 5 18.12.2012 22:28
ООП ol-k_34 Общие вопросы C/C++ 6 23.09.2012 16:43
C# + ООП atomohod Помощь студентам 4 03.12.2010 20:26
Паскаль ООП. Примеры программ с использованием ООП SeЯgey Помощь студентам 5 13.05.2009 21:55