Problem
Truth Table implementation: Write a function which takes integer as In put parameter (let's say n), print all True (T) , False (F) combinations n times. Here is the example:
for n = 1
Output :
T
F
for n = 2
Output :
T F
F T
For n = 3
Output :
T T T
T T F
T F T
T F F
F T T
F T F
F F T
F F F
Solution
#include <iostream>
#include <iomanip>
#include <iterator>
#include <algorithm>
#include <bitset>
using namespace std;
int* CreateTFArray(int len)
{
int* arr = new int[len + 1];
for(int i = 0; i < len + 1; ++i){
arr[i] = 0;
}
return arr;
}
void AddOne(int* arr, int len)
{
int ca = arr[0];
arr[0] ^= 1;
for(int i = 1; i < len + 1 && ca; ++i){
int temp = arr[i];
arr[i] ^= ca;
ca &= temp;
}
}
void DisplayTF(int* arr, int len)
{
for_each(arr, arr + len,[](int x) -> void{
if(x == 1){
cout << "T ";
}
else{
cout << "F ";
}
});
cout << endl;
}
int main(int argc, char* argv[])
{
for(int i = 0; i < 6; ++i){
cout << "Input : " << i << endl;
int* arr = CreateTFArray(i);
int cnt = 0;
while(arr[i] != 1){
cout << setw(5) << left << ++cnt ;
DisplayTF(arr, i);
AddOne(arr, i);
cout << "-------------------------------" << endl;
}
delete[] arr;
}
return 0;
}
Ouput
Input : 0
1
-------------------------------
Input : 1
1 F
-------------------------------
2 T
-------------------------------
Input : 2
1 F F
-------------------------------
2 T F
-------------------------------
3 F T
-------------------------------
4 T T
-------------------------------
Input : 3
1 F F F
-------------------------------
2 T F F
-------------------------------
3 F T F
-------------------------------
4 T T F
-------------------------------
5 F F T
-------------------------------
6 T F T
-------------------------------
7 F T T
-------------------------------
8 T T T
-------------------------------
Input : 4
1 F F F F
-------------------------------
2 T F F F
-------------------------------
3 F T F F
-------------------------------
4 T T F F
-------------------------------
5 F F T F
-------------------------------
6 T F T F
-------------------------------
7 F T T F
-------------------------------
8 T T T F
-------------------------------
9 F F F T
-------------------------------
10 T F F T
-------------------------------
11 F T F T
-------------------------------
12 T T F T
-------------------------------
13 F F T T
-------------------------------
14 T F T T
-------------------------------
15 F T T T
-------------------------------
16 T T T T
-------------------------------
Input : 5
1 F F F F F
-------------------------------
2 T F F F F
-------------------------------
3 F T F F F
-------------------------------
4 T T F F F
-------------------------------
5 F F T F F
-------------------------------
6 T F T F F
-------------------------------
7 F T T F F
-------------------------------
8 T T T F F
-------------------------------
9 F F F T F
-------------------------------
10 T F F T F
-------------------------------
11 F T F T F
-------------------------------
12 T T F T F
-------------------------------
13 F F T T F
-------------------------------
14 T F T T F
-------------------------------
15 F T T T F
-------------------------------
16 T T T T F
-------------------------------
17 F F F F T
-------------------------------
18 T F F F T
-------------------------------
19 F T F F T
-------------------------------
20 T T F F T
-------------------------------
21 F F T F T
-------------------------------
22 T F T F T
-------------------------------
23 F T T F T
-------------------------------
24 T T T F T
-------------------------------
25 F F F T T
-------------------------------
26 T F F T T
-------------------------------
27 F T F T T
-------------------------------
28 T T F T T
-------------------------------
29 F F T T T
-------------------------------
30 T F T T T
-------------------------------
31 F T T T T
-------------------------------
32 T T T T T
-------------------------------
Press any key to continue . . .