slegbalt.pas 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. program slegbalt;
  2. uses
  3. typ,
  4. iom,
  5. sle;
  6. const
  7. c = 0;
  8. d = 10;
  9. var
  10. l, r, i, p, q, n, term, rw, vb, nvb: ArbInt;
  11. ca: ArbFloat;
  12. a: array[c..d] of ^ArbFloat;
  13. b, x: array[c..d] of ArbFloat;
  14. begin
  15. Write(' program results slegbalt');
  16. case sizeof(ArbFloat) of
  17. 4: writeln('(single)');
  18. 6: writeln('(real)');
  19. 8: writeln('(double)');
  20. end;
  21. Read(randseed);
  22. writeln;
  23. writeln(' randseed =', randseed: 6);
  24. writeln;
  25. Read(nvb);
  26. writeln(' number of examples:', nvb: 3);
  27. writeln;
  28. for vb := 1 to nvb do
  29. begin
  30. writeln('example', vb: 2);
  31. Read(p, q, n, l, r);
  32. writeln;
  33. writeln(' n=', n: 1, ' l=', l: 1, ' r=', r: 1);
  34. for i := 1 to n do
  35. begin
  36. if i <= l + 1 then
  37. if i <= n - r then
  38. rw := r + i
  39. else
  40. rw := n
  41. else
  42. if i <= n - r then
  43. rw := r + l + 1
  44. else
  45. rw := n - i + l + 1;
  46. GetMem(a[i + p - 1], rw * sizeof(ArbFloat));
  47. iomrev(input, a[i + p - 1]^, rw);
  48. end;
  49. iomrev(input, b[q], n);
  50. slegbal(n, l, r, a[p], b[q], x[q], ca, term);
  51. writeln;
  52. writeln(' A = ');
  53. for i := 1 to n do
  54. begin
  55. if i <= l + 1 then
  56. begin
  57. if i <= n - r then
  58. rw := r + i
  59. else
  60. rw := n;
  61. end
  62. else
  63. begin
  64. if i <= n - r then
  65. rw := r + l + 1
  66. else
  67. rw := n - i + l + 1;
  68. Write('': (i - l - 1) * (numdig + 2));
  69. end;
  70. iomwrv(output, a[i + p - 1]^, rw, numdig);
  71. FreeMem(a[i + p - 1], rw * sizeof(ArbFloat));
  72. end;
  73. writeln;
  74. writeln('b=');
  75. iomwrv(output, b[q], n, numdig);
  76. writeln;
  77. writeln('term=', term: 2);
  78. case term of
  79. 1:
  80. begin
  81. writeln;
  82. writeln('x=');
  83. iomwrv(output, x[q], n, numdig);
  84. writeln;
  85. writeln(' ca=', ca: 12);
  86. end;
  87. 2: writeln('solution not possible');
  88. 3: writeln(' wrong input (l<0, r<0, l>n-1 or r>n-1)')
  89. end;
  90. writeln('---------------------------------------------');
  91. end; {vb}
  92. end.