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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2017, 22:10   #1
fastrecovery
Новичок
Джуниор
 
Регистрация: 19.12.2017
Сообщений: 1
По умолчанию Решение логической задачи на Delphi

Нужно что бы программа решала задачу, и выводила ответ в консоль.
Задача:
Алеша, Боря и Гриша нашли в земле сосуд. Рассматривая удивительную находку, каждый высказал по два предположения:
Алеша: "Сосуд греческий и изготовлен в V в."
Борис: "Сосуд финикийский и изготовлен в III в."
Гриша: "Сосуд не греческий и изготовлен в IV в."
Учитель истории сказал ребятам, что каждый из них прав только в одном из двух предположений. Где и в каком веке изготовлен сосуд?
Ответ: cосуд изготовлен в Финикии в V в.

Я набросал основу задачи, но не знаю как правильно записать решение на языке Delphi.

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
a,b,c,d,e,f,g,v3,v4,v5:boolean;
begin
// не знаю как правильно записать через xor или через and и or.
a:= g xor v5;  // (g and not v5) or (not g and v5)
b:= f xor v3; //   (f and not v3) or (not f and v3)
c:= not g xor v4; // (not g and not v4) or (g and v4)

d:= v3 xor v4 xor v5; // (v3 and (not v4) and (not v5)) or ((not v3) and v4 and (not v5)) or ((not v3) and (not v4) and v5)
e:= g xor f; // (f and not g) or (not f and g)

//На языке алгебры логики я решал это путем соединения 5 вышеуказанных высказываний в одно и упрощения. Проблема в том, что я не знаю как правильно записать это на языке Delphi, чтобы выводился ответ.

if g=true then writeln('SOSYD IZGOTOVLEN V GRECII');
if f=true then writeln('SOSYD IZGOTOVLEN V FINIKII');
if v3=true then writeln('SOSYD IZGOTOVLEN V 3 VEKE');
if v4=true then writeln('SOSYD IZGOTOVLEN V 4 VEKE');
if v5=true then writeln('SOSYD IZGOTOVLEN V 5 VEKE');

readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.

Последний раз редактировалось fastrecovery; 20.12.2017 в 15:31.
fastrecovery вне форума Ответить с цитированием
Старый 19.12.2017, 23:38   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Программно систему логических уравнений? 5 переменных, 2^5 возможных комбинаций их значений, перебор всех с поиском подходящей комбинации, типа компьютерного варианта таблицы истинности. Или решить систему на бумаге и в проге выдать только ответ ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.12.2017 в 23:43.
Аватар вне форума Ответить с цитированием
Старый 19.12.2017, 23:58   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от fastrecovery Посмотреть сообщение
Код:
if g=true then
не надо так писать. В данном случае это "масло масляное" (тавтология)

достаточно
Код:
if g then ...
f f then ..
if v3 then ...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение логической последовательности fragilewelldone C# (си шарп) 0 17.03.2012 22:54
РЕШЕНИЕ ЗАДАЧИ В DELPHI mastervos Помощь студентам 0 04.12.2010 23:43
Delphi Решение задачи ДваДваВо7 Помощь студентам 0 18.10.2010 19:13
Решение задачи в Delphi Alex Disturbed Помощь студентам 4 04.10.2010 14:08
Решение задачи на Delphi 7 Allah2009 Помощь студентам 3 02.05.2009 10:43