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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2008, 09:09   #1
Vesnushka18
 
Регистрация: 25.03.2008
Сообщений: 7
По умолчанию Элементы математической логики. Высказывания

Здравствуйте! У меня тут такая проблема: необходимо составить процедуру, упрощающую формулу исчисления высказываний F(A,B,C) на делфи,а как это сделать я даже не представляю. Может у кого-нибудь есть какие-нибудь идеи,если есть поделитесь пожалуйста со мной! Зарание спасибо!
Vesnushka18 вне форума Ответить с цитированием
Старый 11.04.2008, 17:40   #2
Vesnushka18
 
Регистрация: 25.03.2008
Сообщений: 7
По умолчанию

Жаль что никто не откликнулся! Но за то я всё сделала сама)))
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
ItTablist: array[1..8,1..3] of char;
s:string;
I,j:integer;
Y:integer;
st:string;
s1:string;
k:integer;
a:string;
F: array[1..8]of string;
const
Tablist: array[1..8,1..3] of char=(('0','0','0'),('0','0','1'),( '0','1','0'),('0','1','1'),('1','0' ,'0'),('1','0','1'),('1','1','0'),( '1','1','1'));
{Таблица исходных значений А,В,С}
function myFunction(s:string; I:integer):char;{Функция вычисления лог. выражения}
begin
repeat //Присвоение значений переменным
Y:=pos('A',s);
If Y>0 then s[y]:=Tablist[i,1];
until Y=0;
repeat
Y:=pos('B',s);
If Y>0 then s[y]:=Tablist[i,2];
until Y=0;
repeat
Y:=pos('C',s);
If Y>0 then s[y]:=Tablist[i,3];
until Y=0;
repeat //Поиск и вычисление лог.отрицания
Y:=pos('!',s);
If Y>0 then
begin
If copy(s,y,2)='!0' then s[y]:= '1' else s[y]:= '0';
delete(s,y+1,1);
end;
until Y=0;
repeat //Поиск и вычисление коньюнкции
Y:=pos('&',s);
If Y>0 then
begin
If copy(s,y-1,3)='1&1' then s[y-1]:= '1' else s[y-1]:= '0';
delete(s,y,2);
end;
until Y=0;
repeat //Поиск и вычисление дизьюнкции
Y:=pos('v',s);
If Y>0 then
begin
If copy(s,y-1,3)='0v0' then s[y-1]:= '0' else s[y-1]:= '1';
delete(s,y,2);
end;
until Y=0;
repeat //Поиск и вычисление импликации
Y:=pos('>',s);
If Y>0 then
begin
If copy(s,y-1,3)='1>0' then s[y-1]:= '0' else s[y-1]:= '1';
delete(s,y,2);
end;
until Y=0;
repeat //Поиск и вычисление эквиваленции
Y:=pos('=',s);
If Y>0 then
begin
If (copy(s,y-1,3)='1=1')or(copy(s,y-1,3)='0=0') then s[y-1]:= '1' else s[y-1]:= '0';
delete(s,y,2);
end;
until Y=0;
result:=s[1];
end;
begin //Начало программы
Write('Vvedite formyly: '); //Ввод формулы
ReadLn(s);
Writeln(s);
st:=s; //сохранение исходной строки
//Поиск скобок и вычисление выражений в них
for K := 1 to 8 do
begin
repeat
Y:=pos(')',s);
If Y>0 then
begin
for I := y downto 1 do
if s[i]='(' then //break;
begin
s1:= copy(s,i+1,y-i-1);
s[i]:= myFunction(s1,K);
delete(s,i+1,y-i+1);
end;
end;
until Y=0;
a:= myFunction(s,K);
s:=st;
F[K]:=a;
end;
for I := 1 to 8 do //Вывод результата
writeln(F[i]);
readln;
end.
Vesnushka18 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Элементы управления Rom1k06 Microsoft Office Excel 7 28.08.2008 09:47
Одинаковые элементы kodov Общие вопросы Delphi 3 11.08.2008 14:03
Повторяющиеся элементы массива Stanislav Общие вопросы Delphi 10 23.05.2008 12:31
Как найти max и min элементы матрицы????? ЕвгениуS Помощь студентам 19 02.03.2008 19:47