Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. // lab1.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <time.h>
  7. #include <locale.h>
  8.  
  9. using namespace std;
  10.  
  11. void fill(double fvect[], int fn) { // заполнение одномерного массива случ знач
  12. int cur = 100; // сумма которых равна 1
  13. double s = 0;
  14. for (int i = 0; i < fn; i++) {
  15. if (i == fn - 1) fvect[i] = 1.0 - s;
  16. else {
  17. fvect[i] = rand() % cur / 100.0;
  18. cur -= fvect[i] * 100;
  19. s += fvect[i];
  20. }
  21. }
  22. }
  23.  
  24. int setState(double fvect[]) {
  25. int i = -1;
  26. double r = rand() % 100 / 100.0;
  27. double s = 0;
  28. do {
  29. i++;
  30. s += fvect[i];
  31. } while (s <= r);
  32. return i;
  33. }
  34.  
  35. int main()
  36. {
  37. setlocale(0, "Russian");
  38. int n;
  39. double s = 0;
  40. //cout << "Введите размерность n: ";
  41. //cin >> n;
  42. n = 4;
  43. double *p; // вектор нач сост
  44. srand((unsigned)time(NULL));
  45. p = new double[n];
  46. fill(p, n);
  47. cout << "Вектор:\n";
  48. for (int i = 0; i < n; i++) {
  49. s += p[i];
  50. printf_s("%.2f ", p[i]);
  51. }
  52. printf_s("Сумма = %.2f\n", s);
  53.  
  54. double **t; // матрица переходов для дискр врем
  55. t = new double*[n];
  56. for (int i = 0; i < n; i++)
  57. t[i] = new double[n];
  58. for (int i = 0; i < n; i++)
  59. fill(t[i], n);
  60. cout << "\nМатрица:\n";
  61. for (int i = 0; i < n; i++) {
  62. s = 0;
  63. for (int j = 0; j < n; j++) {
  64. s += t[i][j];
  65. printf_s("%.2f ", t[i][j]);
  66. }
  67. printf_s("Сумма = %.2f\n", s);
  68. }
  69.  
  70. int st = setState(p); // задание начального состояния
  71. int count = 20;
  72. cout << "Цепочка из " << count << " состояний:\n" << (st + 1);
  73. for (int i = 1; i < count; i++) {
  74. st = setState(t[st]);
  75. cout << " -> " << (st + 1);
  76. }
  77. cout << "\n\n";
  78. system("pause");
  79. return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement