slegpblt.pas 1.8 KB

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