Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.87 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int result(signed char* dnf_i, unsigned char table_str, int var_count)
  6. {
  7.     int i = 0, flag = 1;
  8.         while (i < var_count)
  9.     {
  10.         if ((dnf_i[i] == -(table_str >> var_count - i - 1) % 2) && dnf_i[i] == -1)
  11.             return 0;
  12.         if (!((table_str >> var_count - i - 1) % 2) && dnf_i[i] == 1)
  13.             return 0;
  14.         i++;
  15.     }
  16.     return 1;
  17. }
  18.  
  19. void tabl_ist_DNF (signed char** DNF, int var_count, int conj_count)
  20. {
  21.     if (var_count <= 8)
  22.     {
  23.         unsigned char table_str = 0;
  24.         int i, flag = 0;
  25.         int powTwo = 1 << var_count;
  26.             for (i = 0; i < powTwo; i++)
  27.         {
  28.             int j;
  29.             for (j = 0; j < var_count; j++)
  30.                 printf("%d ", (table_str >> (var_count - j - 1)) % 2);
  31.             j = 0;
  32.             while (j < conj_count && !result(DNF[j], table_str, var_count))
  33.                 j++;
  34.             if (j == conj_count)
  35.                 printf("- 0");
  36.             else
  37.             {
  38.                 printf("- 1");
  39.                 flag++;
  40.             }
  41.             printf("\n");
  42.             table_str++;
  43.         }
  44.  
  45.         if (!flag)
  46.             printf("Protevorechiva ");
  47.         else
  48.             if (flag == powTwo)
  49.                 printf("obcheznachima");
  50.             else
  51.                 printf("ne protivorechiva i ne obcheznachima ");
  52.     }
  53.     else return;
  54. }
  55.  
  56. int main()
  57. {
  58.     int i, j, conj_count = 0, var_count = 0;
  59.     printf("Vvedite kol-vo skobok i kol-vo literalov : ");
  60.     scanf("%d%d", &conj_count, &var_count);
  61.     signed char **DNF = (signed char**)malloc(conj_count * sizeof(signed char*));
  62.     for (i = 0; i < conj_count; i++)
  63.         DNF[i] = (signed char*)malloc(var_count);
  64.  
  65.     printf("Vvedite skobki \n");
  66.     for (i = 0; i < conj_count; i++)
  67.         for (j = 0; j < var_count; j++)
  68.             scanf("%d", &DNF[i][j]);
  69.  
  70.     tabl_ist_DNF(DNF, var_count, conj_count);
  71.  
  72.     for (i = 0; i < conj_count; i++)
  73.         free(DNF[i]);
  74.     free(DNF);
  75.     getchar();
  76.     getchar();
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement