Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. -- int number, i = 1, factorial = 1, sigma = 0, primes;
  2. -- cin << number;
  3. -- if (number > 2) { // e1
  4. -- for (int j = 3; j <= number; j++) { // e2
  5. -- factorial = 1; // e3
  6. -- i = 1; // e3
  7. -- for (int x = 0; x < j - 2; x++) { // e4
  8. -- factorial = factorial * i; // e5
  9. -- i++; // e6
  10. -- }
  11. -- sigma = sigma + (factorial - j * (factorial / j)); // e7
  12. -- }
  13. -- primes = -1 + sigma; // e8
  14. -- if (number == 3) // e9
  15. -- cout >> 2; // e10
  16. -- else
  17. -- cout >> primes; // e11
  18. -- } else
  19. -- cout >> "wrong number"; // e12
  20.  
  21. MODULE main
  22.  
  23. FROZENVAR number : 0..8;
  24.  
  25. VAR e : {e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12};
  26. i : 1..7;
  27. j : 3..9;
  28. x : 0..6;
  29. factorial : 1..720;
  30. sigma : 0..5;
  31. primes : 0..4;
  32. c : 0..6;
  33. a : 1..3;
  34.  
  35. ASSIGN
  36. init(e) := e1;
  37. next(e) := case
  38. e = e1 & (number > 2) : e2;
  39. e = e1 & (number <= 2) : e12;
  40. e = e2 & (j <= number) : e3;
  41. e = e2 & (j > number) : e8;
  42. e = e3 : e4;
  43. e = e4 & (x < ( j - 2 )) : e5;
  44. e = e4 & (x >= ( j - 2 )) : e7;
  45. e = e5 : e6;
  46. e = e6 : e4;
  47. e = e7 : e2;
  48. e = e8 : e9;
  49. e = e9 & number = 3 : e10;
  50. e = e9 & number != 3 : e11;
  51. TRUE : e;
  52. esac;
  53.  
  54. ASSIGN
  55. init(i) := 1;
  56. next(i) := case
  57. next(e) = e3 : 1;
  58. next(e) = e6 & i < 2 : i + 1;
  59. TRUE : i;
  60. esac;
  61.  
  62. ASSIGN
  63. init(j) := 3;
  64. next(j) := case
  65. e = e7 & next(e) = e2 & j <= 8 : j + 1;
  66. TRUE : j;
  67. esac;
  68.  
  69. ASSIGN
  70. next(x) := case
  71. e = e3 & next(e) = e4 : 0;
  72. e = e6 & next(e) = e4 & x + 1 <= 6 : x + 1;
  73. TRUE : x;
  74. esac;
  75.  
  76.  
  77. ASSIGN
  78. init(factorial) := 1;
  79. next(factorial) := case
  80. e = e3 : 1;
  81. e = e5 & factorial <= 720 & factorial*i <= 720 : factorial * i;
  82. TRUE: factorial;
  83. esac;
  84.  
  85.  
  86. ASSIGN
  87. init(sigma) := 0;
  88. next(sigma):= case
  89. e = e7 & (sigma + (factorial - j * (factorial / j))) <= 5 : sigma + (factorial - j * (factorial / j));
  90. TRUE : sigma;
  91. esac;
  92.  
  93. ASSIGN
  94. init(primes) := 0;
  95. next(primes) := case
  96. e = e8 & (-1 + sigma) >= 0 & (-1 + sigma) <= 4 : -1 + sigma;
  97. TRUE : primes;
  98. esac;
  99.  
  100. ASSIGN
  101. init(c) := 0;
  102. next(c) := case
  103. c + 1 > 6 : c;
  104. next(e) = e3 : c + 1;
  105. TRUE : c;
  106. esac;
  107.  
  108. ASSIGN
  109. init(a) := 1;
  110. next(a) := case
  111. a = 1 & e = next(e) & i = next(i) & j = next(j) & x = next(x) & factorial = next(factorial) & sigma = next(sigma) & primes = next(primes) & c = next(c) : 2;
  112. a = 2 : 3;
  113. TRUE : a;
  114. esac;
  115.  
  116. CTLSPEC AG (number in 0..2) <-> AX e = e12;
  117. CTLSPEC number = 0 -> AF primes = 0;
  118. CTLSPEC number = 8 -> AF primes = 4;
  119. COMPUTE MAX[number = 5 & a = 1, a = 2];
  120. CTLSPEC !EBF 35..35 (a=2);
  121. COMPUTE MAX[number = 4 & a = 1, a=2];
  122. CTLSPEC !EBF 22..22 (a=2);
  123. COMPUTE MAX[number = 8 & a = 1, a=2];
  124. CTLSPEC !EBF 92..92 (a=2);
  125.  
  126. -- -- UWAGI!!!!!!!!!
  127. -- Dodać zmienna dodatkowa do zliczania 'j'
  128. -- Rozlaczanie połączenia przez sesje musi być wcześniej (next w kliencie)
  129. -- Inicjalizacja 'i' wczesniej
  130. -- Walidacje:
  131. -- Źle - w walidacji 0:8 nie zgadywac, użyć jakoś compute min max
  132. -- W ostatniej walidacji nie postawiac zmiennej tylko zapisać to w formule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement