Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- void generate_truth_table(void *func(int *inputs), int n);
- int main()
- {
- /* Example function */
- int f(int *v) {
- return (v[0] & v[1]) | (v[2] & v[3]);
- }
- generate_truth_table(&f, 4);
- return 0;
- }
- void generate_truth_table(void *func(int *inputs), int n)
- {
- void print_repeating(char *s, int n) {
- for (; n > 0; n--) {
- printf(s);
- }
- printf("\n");
- }
- /* x1 |x2 |x3 |...|xn | */
- int i, j;
- for (i = 0; i < n; i++) {
- printf(" x%d|", i);
- }
- printf(" f ");
- printf("\n");
- /* ---+---+---+---+ */
- print_repeating("---+", n + 1);
- for (i = 0; i < (2 << (n-1)); i++) {
- int v[n];
- for (j = n-1; j >= 0; j--) {
- v[j] = (i >> j) % 2;
- printf(" %d |", v[j]);
- }
- printf(" %d |", (*func)(v));
- printf("\n");
- print_repeating("---+", n + 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement