Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int result(signed char* dnf_i, unsigned char table_str, int var_count)
- {
- int i = 0, flag = 1;
- while (i < var_count)
- {
- if ((dnf_i[i] == -(table_str >> var_count - i - 1) % 2) && dnf_i[i] == -1)
- return 0;
- if (!((table_str >> var_count - i - 1) % 2) && dnf_i[i] == 1)
- return 0;
- i++;
- }
- return 1;
- }
- void tabl_ist_DNF (signed char** DNF, int var_count, int conj_count)
- {
- if (var_count <= 8)
- {
- unsigned char table_str = 0;
- int i, flag = 0;
- int powTwo = 1 << var_count;
- for (i = 0; i < powTwo; i++)
- {
- int j;
- for (j = 0; j < var_count; j++)
- printf("%d ", (table_str >> (var_count - j - 1)) % 2);
- j = 0;
- while (j < conj_count && !result(DNF[j], table_str, var_count))
- j++;
- if (j == conj_count)
- printf("- 0");
- else
- {
- printf("- 1");
- flag++;
- }
- printf("\n");
- table_str++;
- }
- if (!flag)
- printf("Protevorechiva ");
- else
- if (flag == powTwo)
- printf("obcheznachima");
- else
- printf("ne protivorechiva i ne obcheznachima ");
- }
- else return;
- }
- int main()
- {
- int i, j, conj_count = 0, var_count = 0;
- printf("Vvedite kol-vo skobok i kol-vo literalov : ");
- scanf("%d%d", &conj_count, &var_count);
- signed char **DNF = (signed char**)malloc(conj_count * sizeof(signed char*));
- for (i = 0; i < conj_count; i++)
- DNF[i] = (signed char*)malloc(var_count);
- printf("Vvedite skobki \n");
- for (i = 0; i < conj_count; i++)
- for (j = 0; j < var_count; j++)
- scanf("%d", &DNF[i][j]);
- tabl_ist_DNF(DNF, var_count, conj_count);
- for (i = 0; i < conj_count; i++)
- free(DNF[i]);
- free(DNF);
- getchar();
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement