логическое уравнение или как сократить д.н.ф
кто-нибудь может поделиться исходником для сокращения логического уравнения, буду очень благодарна.
нужно написать программу которая по таблице истинности составляет логическое уравнение с последующей его минимизацией.Составить уравнение получилось, а вот как его минимизировать (упростить) не знаю. Пишу на Борланд С++
кто-нибудь может поделиться исходником для сокращения логического уравнения, буду очень благодарна.
Как правило лучше привести свое решение, конкретизировав что не получается. Если нужен готовый исходник - плиз - в данной теме.
Тогда лучше конкретизировать размер "очень благодарна" :)
Переезжаем. Пристегнитесь.
нужно написать программу которая по таблице истинности составляет логическое уравнение с последующей его минимизацией.Составить уравнение получилось, а вот как его минимизировать (упростить) не знаю. Пишу на Борланд С++
кто-нибудь может поделиться исходником для сокращения логического уравнения, буду очень благодарна.
Есть метод карт Карно. В инете можно что-то поискать, но метод очень хорошо и доступно описан в книге Точчи, Уидмер - Цифровые системы.
Как правило лучше привести свое решение, конкретизировав что не получается. Если нужен готовый исходник - плиз - в данной теме.
Тогда лучше конкретизировать размер "очень благодарна" :)
Переезжаем. Пристегнитесь.
Получилось у меня вот так, вроде все работает:
#include <stdio.h>;
#include <conio.h>;
#include <iostream.h>;
void oshibka(void);
void main ()
{
clrscr();
typedef int bool;
bool x[10], y[10],y1[10],z[10];
int i,razm;
//oshibka();
cout<<"Введите количество строк таблицы истинности"<<endl;
cin>>razm;
for (i=1;i<=razm;i++)
{
label:
cout<<"Введите"<<i<<"х-массива_"<<endl;
cin>>x;
if((x!=0) && (x!=1))
{oshibka();
goto label;}
cout<<"Введите"<<i<<"у-массива_"<<endl;
cin>>y;
cout<<"Введите"<<i<<"элемент y1-массива_"<<endl;
cin>>y1;
cout<<"Введите"<<i<<"элемент z-массива"<<endl;
cin>>z;
}
int k=0;
for (i=1;i<=razm;i++)
if (z==1){
if(k==1)cout<<"+";
if (x!=1) cout<<"!x";else cout<<"x";
if(y!=1) cout<<"!y"; else cout<<"y";
if(y1!=1)cout<<"!y1";else cout<<"y1";
k=1;
}
cout<<"=z";
getch();
}
void oshibka(void)
{cout<<"Вы должны ввести 0 или 1"<<endl;}
Работает, но вот как сократить получившуюся формулу?