slegbate.pas 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. program slegbate;
  2. uses
  3. iom,
  4. sle,
  5. typ;
  6. const
  7. c = 0;
  8. d = 100;
  9. e = 0;
  10. f = 10;
  11. var
  12. l, r, i, p, q, n, term, ind, rw, vb, nvb: ArbInt;
  13. ca: ArbFloat;
  14. a: array[c..d] of ArbFloat;
  15. b, x: array[e..f] of ArbFloat;
  16. begin
  17. Write(' program results slegbate');
  18. case sizeof(ArbFloat) of
  19. 4: writeln('(single)');
  20. 6: writeln('(real)');
  21. 8: writeln('(double)');
  22. end;
  23. Read(randseed);
  24. writeln;
  25. writeln(' randseed =', randseed: 6);
  26. writeln;
  27. Read(nvb);
  28. writeln(' number of examples:', nvb: 3);
  29. writeln;
  30. for vb := 1 to nvb do
  31. begin
  32. writeln('example', vb: 2);
  33. Read(p, q, n, l, r);
  34. ind := p;
  35. writeln;
  36. writeln(' n=', n: 1, ' l=', l: 1, ' r=', r: 1);
  37. for i := 1 to n do
  38. begin
  39. if i <= l + 1 then
  40. begin
  41. if i <= n - r then
  42. rw := r + i
  43. else
  44. rw := n;
  45. end
  46. else
  47. if i <= n - r then
  48. rw := r + l + 1
  49. else
  50. rw := n - i + l + 1;
  51. iomrev(input, a[ind], rw);
  52. ind := ind + rw;
  53. end;
  54. iomrev(input, b[q], n);
  55. slegba(n, l, r, a[p], b[q], x[q], ca, term);
  56. ind := p;
  57. writeln;
  58. writeln(' A = ');
  59. for i := 1 to n do
  60. begin
  61. if i <= l + 1 then
  62. begin
  63. if i <= n - r then
  64. rw := r + i
  65. else
  66. rw := n;
  67. end
  68. else
  69. begin
  70. if i <= n - r then
  71. rw := r + l + 1
  72. else
  73. rw := n - i + l + 1;
  74. Write('': (i - l - 1) * (numdig + 2));
  75. end;
  76. iomwrv(output, a[ind], rw, numdig);
  77. ind := ind + rw;
  78. end;
  79. writeln;
  80. writeln('b=');
  81. iomwrv(output, b[q], n, numdig);
  82. writeln;
  83. writeln('term=', term: 2);
  84. case term of
  85. 1:
  86. begin
  87. writeln;
  88. writeln('x=');
  89. iomwrv(output, x[q], n, numdig);
  90. writeln;
  91. writeln(' ca=', ca: 12);
  92. end;
  93. 2: writeln('solution not possible');
  94. 3: writeln(' wrong input (l<0, r<0, l>n-1 or r>n-1)')
  95. end;
  96. writeln('---------------------------------------------');
  97. end; {vb}
  98. end.
  99. program slegbate;
  100. uses
  101. iom,
  102. sle,
  103. typ;
  104. const
  105. c = 0;
  106. d = 100;
  107. e = 0;
  108. f = 10;
  109. var
  110. l, r, i, p, q, n, term, ind, rw, vb, nvb: ArbInt;
  111. ca: ArbFloat;
  112. a: array[c..d] of ArbFloat;
  113. b, x: array[e..f] of ArbFloat;
  114. begin
  115. Write(' program results slegbate');
  116. case sizeof(ArbFloat) of
  117. 4: writeln('(single)');
  118. 6: writeln('(real)');
  119. 8: writeln('(double)');
  120. end;
  121. Read(randseed);
  122. writeln;
  123. writeln(' randseed =', randseed: 6);
  124. writeln;
  125. Read(nvb);
  126. writeln(' number of examples:', nvb: 3);
  127. writeln;
  128. for vb := 1 to nvb do
  129. begin
  130. writeln('example', vb: 2);
  131. Read(p, q, n, l, r);
  132. ind := p;
  133. writeln;
  134. writeln(' n=', n: 1, ' l=', l: 1, ' r=', r: 1);
  135. for i := 1 to n do
  136. begin
  137. if i <= l + 1 then
  138. begin
  139. if i <= n - r then
  140. rw := r + i
  141. else
  142. rw := n;
  143. end
  144. else
  145. if i <= n - r then
  146. rw := r + l + 1
  147. else
  148. rw := n - i + l + 1;
  149. iomrev(input, a[ind], rw);
  150. ind := ind + rw;
  151. end;
  152. iomrev(input, b[q], n);
  153. slegba(n, l, r, a[p], b[q], x[q], ca, term);
  154. ind := p;
  155. writeln;
  156. writeln(' A = ');
  157. for i := 1 to n do
  158. begin
  159. if i <= l + 1 then
  160. begin
  161. if i <= n - r then
  162. rw := r + i
  163. else
  164. rw := n;
  165. end
  166. else
  167. begin
  168. if i <= n - r then
  169. rw := r + l + 1
  170. else
  171. rw := n - i + l + 1;
  172. Write('': (i - l - 1) * (numdig + 2));
  173. end;
  174. iomwrv(output, a[ind], rw, numdig);
  175. ind := ind + rw;
  176. end;
  177. writeln;
  178. writeln('b=');
  179. iomwrv(output, b[q], n, numdig);
  180. writeln;
  181. writeln('term=', term: 2);
  182. case term of
  183. 1:
  184. begin
  185. writeln;
  186. writeln('x=');
  187. iomwrv(output, x[q], n, numdig);
  188. writeln;
  189. writeln(' ca=', ca: 12);
  190. end;
  191. 2: writeln('solution not possible');
  192. 3: writeln(' wrong input (l<0, r<0, l>n-1 or r>n-1)')
  193. end;
  194. writeln('---------------------------------------------');
  195. end; {vb}
  196. end.