Advertisement
Guest User

Untitled

a guest
May 19th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <ctime>
  5. using namespace std;
  6. //Выводит на экран позицию и скорость j-ого автомобиля
  7. void print_car (int car_position[], int car_speed[], int j)
  8. {
  9. cout « "Позиция " « j + 1 « "-ой машины: " « car_position[j] « "; ";
  10. cout « "Скорость " « j + 1 « "-ой машины: " « car_speed[j] « endl ;
  11. }
  12. //Выводит на экран все позиции и скорости автомобилей на дороге
  13. void print_all_cars (int car_position[], int car_speed[], int N)
  14. {
  15. int i;
  16. for (i=0; i<=(N - 1); i++)
  17. print_car(car_position,car_speed,i);
  18. }
  19. void print_car_s (int car_speed[], int j)
  20. {
  21. cout « car_speed[j] « "+" ;
  22. }
  23. //Выводит на экран все позиции и скорости автомобилей на дороге
  24. void print_all_cars_s (int car_speed[], int N)
  25. {
  26. int i;
  27. for (i=0; i<=(N - 1); i++)
  28. print_car_s(car_speed,i);
  29. }
  30. //Выводит на экран среднюю скорость j-ого автомобиля
  31. void print_sred_speed (int car_speed_sred[], int j)
  32. {
  33. cout « "Средняя скорость " « j + 1 « "-ой машины: " « car_speed_sred[j] « "; ";
  34. }
  35. //Выводит на экран все средние скорости автомобилей на дороге
  36. void print_all_sred_speed (int car_speed_sred[], int N)
  37. {
  38. int i;
  39. for (i=0; i<=(N - 1); i++)
  40. print_sred_speed(car_speed_sred,i);
  41. }
  42. int main()
  43. {
  44. int i, j, N, V_max, length, l, t, M, line_x;
  45. //а - превышение скорости на значение, b - вероятность превышения скорости, c - вероятность умного торможения
  46. int a, b, c, v_torm;
  47. int car_position_save, car_speed_save, car_speed_sred_save;
  48. int V;
  49. float Q;
  50. int stop_car_all, stop_car;
  51. int car_position[N];
  52. int car_speed[N];
  53. int car_speed_new[N];
  54. float car_speed_sred[N];
  55. //int road[N];
  56. /*cout « "Введите кол-во машин на дороге: ";
  57. cin » N;
  58. cout « "Кол-вос машин на дороге: " « N « "." « endl;
  59. cout « "Введите максимальную скорость для машин: ";
  60. cin » V_max;
  61. cout « " Максимальная скорость для машин: " « V_max « "." « endl;
  62. for (i = 0; i <= (N - 1); i++)
  63. {
  64. cout « "Введите позицию " « i+1 « "-ой машины: " ;
  65. cin » car_position[i];
  66. cout « "Введите скорость " « i+1 « "-ой машины: " ;
  67. cin » car_speed[i];
  68. }
  69. */
  70. N=3; //кол-во машин на дороге
  71. V_max=5;
  72. a=0,1; //процент превышения скорости
  73. v_torm=1;
  74. length=100; //длина дороги
  75. V=0; //средняя скорость дороги
  76. car_position[0]=1;
  77. car_speed[0]=1;
  78. car_position[1]=2;
  79. car_speed[1]=1;
  80. stop_car_all = 0; //кол-воо машин, которое стояло за все время
  81. stop_car = 0 ; //кол-во машин, которые стоят в один момент времени
  82. cout « "Начальные расположения и скорости автомобилей на дороге" « endl;
  83. print_all_cars(car_position,car_speed,N);
  84. cout « endl;
  85. //for (t=0; t<=5; t++)
  86. {
  87. //высчитываем новые скорости для всех автомобилей
  88. for (i=0; i<=(N-1); i++)
  89. {
  90. if (i == (N-1))
  91. l = length - abs (car_position[i] - car_position[0]) - 1;
  92. else
  93. l = abs(car_position[i+1] - car_position[i]) - 1;
  94. // l - свободное расстояние для i-ой машины
  95. if (l>car_speed[i])
  96. car_speed_new[i] = car_speed[i] + 1;
  97. else
  98. car_speed_new[i] = l ;
  99. //функция превышения скорости - рандомная функция g=g(a,b), где a - значение превышения, b - вероятность
  100. b = 1;
  101. if (car_speed_new[i]>=V_max)
  102. if (b==0)
  103. car_speed_new[i] = V_max*(1 + a);
  104. else
  105. car_speed_new[i] = V_max;
  106. //умное торможение
  107. //функция умного торможения - рандомная функция q=q(v,c), где v_torm - значение скорости при торможении, c - вероятность
  108. c = 1;
  109. if ((car_speed_new[i]<=2) and (c == 0))
  110. car_speed_new[i]=v_torm;
  111. //средняя скорость всей дороги
  112. //V=V+car_speed_new[i] ;
  113. //cout « V « " ";
  114. /*
  115. //средняя скорость i-ого автомобиля
  116. car_speed_sred[i] = ( car_speed_sred[i] + car_speed_new[i] ) / 2;
  117. if (car_speed_new[i]==0)
  118. {
  119. stop_car = stop_car + 1;
  120. stop_car_all = stop_car_all + 1;
  121. }
  122. */
  123. }
  124. //перемещение автомобилей по дороге
  125. for (i=0; i<=(N-1); i++)
  126. {
  127. car_speed[i] = car_speed_new[i];
  128. car_position[i] = car_position[i] + car_speed[i];
  129. line_x = 0; //индекатор, что машина пересекла круг
  130. if (car_position[i] >= length)
  131. {
  132. car_position[i]=car_position[i] - length;
  133. line_x = 1;
  134. //cout «
  135.  
  136. line_x;
  137. }
  138. }
  139. if (line_x == 1)
  140. {
  141. //новая нумерация машин
  142. car_position_save=car_position[N - 1];
  143. car_speed_save=car_speed[N - 1];
  144. //car_speed_sred_save=car_speed_sred[N - 1];
  145. for (i = (N - 2); i >= 0; i--)
  146. {
  147. car_position[i + 1] = car_position[i];
  148. car_speed[i + 1] = car_speed[i];
  149. //car_speed_sred[i +1] = car_speed_sred[i];
  150. }
  151. car_position[0]=car_position_save;
  152. car_speed[0]=car_speed_save;
  153. //car_speed_sred[0]=car_speed_sred_save;
  154. //cout « t «"-момент времени и было пересечения линии Х" « endl ;
  155. }
  156. //else
  157. //cout « t « "-момент времени и не было пересечения линии Х" « endl ;
  158. //print_all_cars(car_position,car_speed,N);
  159. print_all_cars_s(car_speed,N);
  160. cout « endl;
  161. //cout « t + 1 « "V: " « V/((t + 1)*N) « endl;
  162. }
  163. return 0;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement