fork download
  1. program DatchikConsole;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils,
  7. Math;
  8.  
  9. var
  10. n, i, j, code: integer;
  11. beta, ksi, u1, u2, u, gamma, s, sum, m, dsum, d, alfa: real;
  12. date: array[1..1000] of real;
  13. disperssion: array[1..1000] of real;
  14. input: string;
  15.  
  16. procedure RAV;
  17. begin
  18. u := u1 + u2;
  19. u1 := u2;
  20. if u > 4 then u := u - 4;
  21. u2 := u;
  22. gamma := u / 4;
  23. end;
  24.  
  25. begin
  26. Writeln;
  27. Write('Введите значение моделируемых значений (n): ');
  28. Readln(input);
  29. Val(input, n, code);
  30.  
  31. if (code <> 0) or (n <= 0) or (n > 1000) then
  32. begin
  33. Writeln('Ошибка: введите корректое число от 1 до 1000');
  34. Writeln;
  35. Write('Press Enter to exit...');
  36. Readln;
  37. Exit;
  38. end;
  39.  
  40. alfa := 2.208;
  41. beta := 0.46;
  42. u1 := 3.14159265;
  43. u2 := 0.542101887;
  44.  
  45. Writeln;
  46. Writeln('Параметры генерации:');
  47. Writeln(' alfa = ', alfa:0:2);
  48. Writeln(' beta = ', beta:0:2);
  49. Writeln(' n = ', n);
  50. Writeln;
  51. Writeln('Сгенерированные значения:');
  52.  
  53. for i := 1 to n do
  54. begin
  55. s := 0;
  56. for j := 1 to Round(alfa) do
  57. begin
  58. RAV;
  59. ksi := -ln(gamma) / beta;
  60. s := s + ksi;
  61. end;
  62. date[i] := s;
  63.  
  64. Write(s:10:1);
  65. if i mod 4 = 0 then
  66. Writeln;
  67. end;
  68.  
  69. if n mod 4 <> 0 then
  70. Writeln;
  71.  
  72. sum := 0;
  73. for i := 1 to n do
  74. sum := sum + date[i];
  75. m := sum / n;
  76.  
  77. for i := 1 to n do
  78. disperssion[i] := sqr(date[i] - m);
  79.  
  80. dsum := 0;
  81. for i := 1 to n do
  82. dsum := dsum + disperssion[i];
  83. d := dsum / (n - 1);
  84.  
  85. Writeln;
  86. Writeln('Результат статического анализа:');
  87. Writeln('Среднее значение (M): ', m:10:3);
  88. Writeln('Дисперсия (D): ', d:10:3);
  89. Writeln('Среднеквадратичное отклонение: ', sqrt(d):10:3);
  90.  
  91. Writeln;
  92. Writeln('Сравнения с теоретическими значениями:');
  93. Writeln('Теоретическое M (alfa/beta): ', (alfa/beta):10:3);
  94. Writeln('Теоретическая D (alfa/beta^2): ', (alfa/sqr(beta)):10:3);
  95.  
  96. Writeln;
  97. Readln;
  98. end.
Success #stdin #stdout 0.01s 5316KB
stdin
7 21
1 2 547152
1 3 509157
1 4 539282
1 5 541645         
1 6 458433
1 7 385173

2 3 131528
2 4 92735
2 5 150511
2 6 94440
2 7 194542
3 4 216600
3 5 272401
3 6 157176
3 7 124077
4 5 57785
4 6 97323
4 7 242232
5 6 136663
5 7 283862
6 7 147426
stdout
Введите значение моделируемых значений (n): Ошибка: введите корректое число от 1 до 1000

Press Enter to exit...