Zaawansowane CPP/Ćwiczenia 9: Szablony wyrażeń: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 26: | Linia 26: | ||
Napisz szablony wyrażeń, które będzie można użyć | Napisz szablony wyrażeń, które będzie można użyć | ||
z powyższymi szablonami. Zaimplementuj trzy klasy <tt>First</tt>, <tt>Second</tt> i <tt>Third</tt>, oznaczające odpowiednio pierwszy, drugi i trzeci argument funkcji logicznej. Zaimplementuj operatory <code><nowiki>&&</nowiki></code>(i), <code><nowiki>||</nowiki></code>(lub), <code><nowiki>!</nowiki></code>(zaprzeczenie), | z powyższymi szablonami. Zaimplementuj trzy klasy <tt>First</tt>, <tt>Second</tt> i <tt>Third</tt>, oznaczające odpowiednio pierwszy, drugi i trzeci argument funkcji logicznej. Zaimplementuj operatory <code><nowiki>&&</nowiki></code>(i), <code><nowiki>||</nowiki></code>(lub), <code><nowiki>!</nowiki></code>(zaprzeczenie), | ||
<code><nowiki>>></nowiki></code> (implikacja) i <code><nowiki>==</nowiki></code>(równoważność) oraz możliwość korzystania ze stałych logicznych <tt>True</tt> i <tt>False</tt>. Np.: | <code><nowiki>>></nowiki></code> (implikacja) i <code><nowiki>==</nowiki></code>(równoważność) oraz możliwość korzystania ze stałych logicznych <tt>True</tt> i <tt>False</tt>. Np.: | ||
First q; | First q; | ||
Linia 32: | Linia 32: | ||
table2(q >> r); | table2(q >> r); | ||
powinno wygenerować: | powinno wygenerować: }} | ||
<nowiki>-------------- | <nowiki>-------------- |
Wersja z 15:27, 21 wrz 2006
Ćwiczenie 1
Zaimplementuj szablony funkcji table1, table2 i table3, generujące tabele prawdy dla jednej, dwu lub trzech zmiennych logicznych. Argumentem tych funkcji ma być funkcja przyjmująca, w zależności od funkcji, od 1 do 3 argumentów typu bool, np.:
bool And(bool q,bool r) {return q && r;} table2(And2) ;
powinno wygenerować :
-------------- | 0 | 0 || 0 | | 0 | 1 || 0 | | 1 | 0 || 0 | | 1 | 1 || 1 | --------------
Podobnie dla table1 i table3.
Ćwiczenie 2
Napisz szablony wyrażeń, które będzie można użyć
z powyższymi szablonami. Zaimplementuj trzy klasy First, Second i Third, oznaczające odpowiednio pierwszy, drugi i trzeci argument funkcji logicznej. Zaimplementuj operatory &&
(i), ||
(lub), !
(zaprzeczenie),
>>
(implikacja) i ==
(równoważność) oraz możliwość korzystania ze stałych logicznych True i False. Np.:
First q; Second r; table2(q >> r);powinno wygenerować:
-------------- | 0 | 0 || 1 | | 0 | 1 || 1 | | 1 | 0 || 0 | | 1 | 1 || 1 | --------------
a
table1(True == q);
powinno wygenerować:
--------- | 0 | 0 | | 1 | 1 | ---------
}}
Ćwiczenie 3
Zaimplementuj szablon funkcji, który będzie przyjmował jako jeden z parametrów szablonu ilość zmiennych logicznych i będzie łączył działanie funkcji table1, table2 i table3. Np.:
table<2>(And);
powinno być równoważne wywołaniu:
table2(And);