PB161 Jazyk C++ - 8. cvičení

Booleovské funkce

Jestliže nevidíte správně česká písmena, zvolte potřebné kódování češtiny manuálně.

Úvod do problematiky:

V Booleově algebře existuje celkem 16 různých funkcí dvou proměnných BF(x,y):

Funkce č.

Výsledek pro
x = 0, y = 0:

Výsledek pro
x = 0, y = 1:

Výsledek pro
x = 1, y = 0:

Výsledek pro
x = 1, y = 1:

Název funkce:

0

0

0

0

0

generátor nuly

1

0

0

0

1

AND

2

0

0

1

0

3

0

0

1

1

x

4

0

1

0

0

5

0

1

0

1

y

6

0

1

1

0

XOR

7

0

1

1

1

OR

8

1

0

0

0

NOR
(Piercova fce)

9

1

0

0

1

ekvivalence

10

1

0

1

0

NOT y

11

1

0

1

1

implikace y=>x

12

1

1

0

0

NOT x

13

1

1

0

1

implikace x=>y

14

1

1

1

0

NAND (Schäfferova fce)

15

1

1

1

1

generátor 1

V tabulce 0 značí false a 1 true.

Povšimněte si, že očíslujeme-li funkce podle výše uvedené tabulky, udává číslo funkce zapsané ve dvojkové soustavě svou kombinací bitů přímo výsledky pro všechny 4 kombinace proměnných x a y.

Zadání:

Implementujte třídu BF pro vyhodnocení obecné booleovské funkce. Její konstruktor bude mít jeden parametr, jímž bude číslo funkce (0 až 15) z výše uvedené tabulky. Dále implementujte funkci int eval(int x, int y), která vyhodnotí hodnotu booleovské funkce zvolené konstruktorem pro zadanou dvojici parametrů.

Například deklarujeme-li BF orf(7), schaf(14); potom orf.eval(x,y) vyhodnotí totéž jako x||y a schaf.eval(x,y) vyhodnotí Schäfferovu funkci nad parametry x a y.

V hlavním programu main() využijte funkci eval k vytvoření tabulky všech 16 booleovských funkcí podobnou tabulce uvedené na začátku tohoto zadání (ovšem bez posledního vysvětlujícího sloupce).

Požadavky:

Poznámky:


Predchozi Předchozí cvičení Dalsi Další cvičení Hlavní stránka Hlavní stránka