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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
Mirek (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
{{cwiczenie|1||
{{cwiczenie|1||


Zaimplementuj funkcję generującą tabele
Zaimplementuj szablony funkcji <tt>table1</tt>, <tt>table2</tt> i <tt>table3</tt>, generujące tabele
prawdy. Pierwszym argumentem tej funkcji ma być wyrażenie logiczne
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 <tt>bool</tt>, np.:
przyjmujące od 1 do 3 argumentów (zmiennych) logicznych. Drugim argumentem
ma być liczba zmiennych logicznych w wyrażeniu.  


  <nowiki> bool and(bool q,bool r) {return q && r;}
  <nowiki> bool And(bool q,bool r) {return q && r;}
 
table2(And2) ;</nowiki>
table(and,2) ;</nowiki>


powinno wygenerować :
powinno wygenerować :
Linia 18: Linia 15:
| 1 | 1 || 1 |     
| 1 | 1 || 1 |     
-------------</nowiki>
-------------</nowiki>
Podobnie dla <tt>table1</tt> i <tt>table3</tt>.
}}
}}


{{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ższym szablonem <code><nowiki>table</nowiki></code>.
z powyższymi szablonami. Zaimplementuj trzy klasy <tt>First</tt>, <tt>Second</tt> i <tt>Third</tt>, oznaczające odpowiednio pierweszy, 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ść). Np.:
<nowiki> First  q;
Second r;
table(q && r,2);</nowiki>
 
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ść).  


  <nowiki> table(q >> r,2);</nowiki>
  First  q;
Second  r;
table2(q >> r);


generuje:  
powinno wygenerować:  


  <nowiki>-------------
  <nowiki>-------------
Linia 42: Linia 37:
| 1 | 1 || 1 |     
| 1 | 1 || 1 |     
-------------</nowiki>
-------------</nowiki>
a
table1(True == q);
powinno wygenerować:
<nowiki>---------
| 0 | 0 |   
| 1 | 1 |   
---------</nowiki>
}}
}}

Wersja z 12:17, 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

{{{3}}}