Zaawansowane CPP/Ćwiczenia 9: Szablony wyrażeń: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Gracja (dyskusja | edycje)
Nie podano opisu zmian
Gracja (dyskusja | edycje)
Nie podano opisu zmian
Linia 24: Linia 24:
{{cwiczenie|2||
{{cwiczenie|2||


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;

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.

Rozwiązanie

Ć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 |    
---------

}}

Rozwiązanie

Ć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);
Podpowiedź
Rozwiązanie