Tolyamba

k-Logic

May 14th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <Windows.h>
  4.  
  5. using namespace std;
  6.  
  7. int otrPosta(int x, int k)
  8. {
  9.     return (x + 1) % k;
  10. }
  11.  
  12. int otrLucas(int x, int k)
  13. {
  14.     return (k - 1) - x;
  15. }
  16.  
  17. int minusX(int x, int k)
  18. {
  19.     return (k - x) % k;
  20. }
  21.  
  22. int min1(int x, int y)
  23. {
  24.     if (x <= y) return x;
  25.     else return y;
  26. }
  27.  
  28. int max1(int x, int y)
  29. {
  30.     if (x >= y) return x;
  31.     else return y;
  32. }
  33.  
  34. int usRazn(int x, int y)
  35. {
  36.     if (x >= y) return x - y;
  37.     else return 0;
  38. }
  39.  
  40. int impl(int x, int y, int k)
  41. {
  42.     if (x <= y) return k - 1;
  43.     else return (k - 1) - (x - y);
  44. }
  45.  
  46. int add2(int x, int y, int k)
  47. {
  48.     return (x + y) % k;
  49. }
  50.  
  51. int check(int x)
  52. {
  53.     int c = 0;
  54.     while (x != 0)
  55.     {
  56.         c++;
  57.         x /= 10;
  58.     }
  59.     return c;
  60. }
  61.  
  62. void str(int x)
  63. {
  64.     for (int i = 0; i < 52; i++) cout << "-";
  65.     if (check(x) == 2) cout << "-";
  66.     if (check(x) == 3) cout << "--";
  67.     if (check(x) == 4) cout << "---";
  68.     if (check(x) == 5) cout << "----";
  69. }
  70.  
  71. int main()
  72. {
  73.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  74.     SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 15));
  75.     setlocale(LC_ALL, "RUS");
  76.     cout << "Введите значение k:\nk = ";
  77.     int k;
  78.     cin >> k;
  79.     while (k < 1)
  80.     {
  81.         cout << "Введите целое положительное число!\nk = ";
  82.         cin >> k;
  83.     }
  84.  
  85.     cout << "\n1. Отрицание Поста (для х)\n";
  86.     cout << "2. Отрицание Поста (для у)\n";
  87.     cout << "3. Отрицание Лукасевича (для х)\n";
  88.     cout << "4. Отрицание Лукасевича (для у)\n";
  89.     cout << "5. Минус Х (для х)\n";
  90.     cout << "6. Минус Х (для у)\n";
  91.     cout << "7. Мin\n";
  92.     cout << "8. Мax\n";
  93.     cout << "9. Усечённая разность\n";
  94.     cout << "10. Импликация\n";
  95.     cout << "11. Сложение по модулю k\n";
  96.  
  97.     int x = 0, y = 0;
  98.     str(x);
  99.     SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 9));
  100.     cout.width(3);
  101.     cout << "\n| x|";
  102.     cout.width(3);
  103.     cout << "  y|";
  104.     cout.width(3);
  105.     cout << "  1|";
  106.     cout.width(3);
  107.     cout << "  2|";
  108.     cout.width(3);
  109.     cout << "  3|";
  110.     cout.width(3);
  111.     cout << "  4|";
  112.     cout.width(3);
  113.     cout << "  5|";
  114.     cout.width(3);
  115.     cout << "  6|";
  116.     cout.width(3);
  117.     cout << "  7|";
  118.     cout.width(3);
  119.     cout << "  8|";
  120.     cout.width(3);
  121.     cout << "  9|";
  122.     cout.width(3);
  123.     cout << " 10|";
  124.     cout.width(3);
  125.     cout << " 11|\n";
  126.     SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 15));
  127.  
  128.     while (x != k)
  129.     {
  130.         while (y != k)
  131.         {
  132.             str(x);
  133.             cout.width(3);
  134.             cout << "\n| ";
  135.             SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 12));
  136.             cout << x;
  137.             SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 15));
  138.             cout << "|";
  139.             cout.width(3);
  140.             SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 12));
  141.             cout << y;
  142.             SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 15));
  143.             cout << "|";
  144.             cout.width(3);
  145.             cout << otrPosta(x, k) << "|";
  146.             cout.width(3);
  147.             cout << otrPosta(y, k) << "|";
  148.             cout.width(3);
  149.             cout << otrLucas(x, k) << "|";
  150.             cout.width(3);
  151.             cout << otrLucas(y, k) << "|";
  152.             cout.width(3);
  153.             cout << minusX(x, k) << "|";
  154.             cout.width(3);
  155.             cout << minusX(y, k) << "|";
  156.             cout.width(3);
  157.             cout << min1(x, y) << "|";
  158.             cout.width(3);
  159.             cout << max1(x, y) << "|";
  160.             cout.width(3);
  161.             cout << usRazn(x, y) << "|";
  162.             cout.width(3);
  163.             cout << impl(x, y, k) << "|";
  164.             cout.width(3);
  165.             cout << add2(x, y, k) << "|\n";
  166.             y++;
  167.         }
  168.         y = 0;
  169.         x++;
  170.     }
  171.     str(x);
  172.     cout << '\n';
  173.     system("pause");
  174.     return 0;
  175. }
Add Comment
Please, Sign In to add comment