Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- //Выводит на экран позицию и скорость j-ого автомобиля
- void print_car (int car_position[], int car_speed[], int j)
- {
- cout « "Позиция " « j + 1 « "-ой машины: " « car_position[j] « "; ";
- cout « "Скорость " « j + 1 « "-ой машины: " « car_speed[j] « endl ;
- }
- //Выводит на экран все позиции и скорости автомобилей на дороге
- void print_all_cars (int car_position[], int car_speed[], int N)
- {
- int i;
- for (i=0; i<=(N - 1); i++)
- print_car(car_position,car_speed,i);
- }
- void print_car_s (int car_speed[], int j)
- {
- cout « car_speed[j] « "+" ;
- }
- //Выводит на экран все позиции и скорости автомобилей на дороге
- void print_all_cars_s (int car_speed[], int N)
- {
- int i;
- for (i=0; i<=(N - 1); i++)
- print_car_s(car_speed,i);
- }
- //Выводит на экран среднюю скорость j-ого автомобиля
- void print_sred_speed (int car_speed_sred[], int j)
- {
- cout « "Средняя скорость " « j + 1 « "-ой машины: " « car_speed_sred[j] « "; ";
- }
- //Выводит на экран все средние скорости автомобилей на дороге
- void print_all_sred_speed (int car_speed_sred[], int N)
- {
- int i;
- for (i=0; i<=(N - 1); i++)
- print_sred_speed(car_speed_sred,i);
- }
- int main()
- {
- int i, j, N, V_max, length, l, t, M, line_x;
- //а - превышение скорости на значение, b - вероятность превышения скорости, c - вероятность умного торможения
- int a, b, c, v_torm;
- int car_position_save, car_speed_save, car_speed_sred_save;
- int V;
- float Q;
- int stop_car_all, stop_car;
- int car_position[N];
- int car_speed[N];
- int car_speed_new[N];
- float car_speed_sred[N];
- //int road[N];
- /*cout « "Введите кол-во машин на дороге: ";
- cin » N;
- cout « "Кол-вос машин на дороге: " « N « "." « endl;
- cout « "Введите максимальную скорость для машин: ";
- cin » V_max;
- cout « " Максимальная скорость для машин: " « V_max « "." « endl;
- for (i = 0; i <= (N - 1); i++)
- {
- cout « "Введите позицию " « i+1 « "-ой машины: " ;
- cin » car_position[i];
- cout « "Введите скорость " « i+1 « "-ой машины: " ;
- cin » car_speed[i];
- }
- */
- N=3; //кол-во машин на дороге
- V_max=5;
- a=0,1; //процент превышения скорости
- v_torm=1;
- length=100; //длина дороги
- V=0; //средняя скорость дороги
- car_position[0]=1;
- car_speed[0]=1;
- car_position[1]=2;
- car_speed[1]=1;
- stop_car_all = 0; //кол-воо машин, которое стояло за все время
- stop_car = 0 ; //кол-во машин, которые стоят в один момент времени
- cout « "Начальные расположения и скорости автомобилей на дороге" « endl;
- print_all_cars(car_position,car_speed,N);
- cout « endl;
- //for (t=0; t<=5; t++)
- {
- //высчитываем новые скорости для всех автомобилей
- for (i=0; i<=(N-1); i++)
- {
- if (i == (N-1))
- l = length - abs (car_position[i] - car_position[0]) - 1;
- else
- l = abs(car_position[i+1] - car_position[i]) - 1;
- // l - свободное расстояние для i-ой машины
- if (l>car_speed[i])
- car_speed_new[i] = car_speed[i] + 1;
- else
- car_speed_new[i] = l ;
- //функция превышения скорости - рандомная функция g=g(a,b), где a - значение превышения, b - вероятность
- b = 1;
- if (car_speed_new[i]>=V_max)
- if (b==0)
- car_speed_new[i] = V_max*(1 + a);
- else
- car_speed_new[i] = V_max;
- //умное торможение
- //функция умного торможения - рандомная функция q=q(v,c), где v_torm - значение скорости при торможении, c - вероятность
- c = 1;
- if ((car_speed_new[i]<=2) and (c == 0))
- car_speed_new[i]=v_torm;
- //средняя скорость всей дороги
- //V=V+car_speed_new[i] ;
- //cout « V « " ";
- /*
- //средняя скорость i-ого автомобиля
- car_speed_sred[i] = ( car_speed_sred[i] + car_speed_new[i] ) / 2;
- if (car_speed_new[i]==0)
- {
- stop_car = stop_car + 1;
- stop_car_all = stop_car_all + 1;
- }
- */
- }
- //перемещение автомобилей по дороге
- for (i=0; i<=(N-1); i++)
- {
- car_speed[i] = car_speed_new[i];
- car_position[i] = car_position[i] + car_speed[i];
- line_x = 0; //индекатор, что машина пересекла круг
- if (car_position[i] >= length)
- {
- car_position[i]=car_position[i] - length;
- line_x = 1;
- //cout «
- line_x;
- }
- }
- if (line_x == 1)
- {
- //новая нумерация машин
- car_position_save=car_position[N - 1];
- car_speed_save=car_speed[N - 1];
- //car_speed_sred_save=car_speed_sred[N - 1];
- for (i = (N - 2); i >= 0; i--)
- {
- car_position[i + 1] = car_position[i];
- car_speed[i + 1] = car_speed[i];
- //car_speed_sred[i +1] = car_speed_sred[i];
- }
- car_position[0]=car_position_save;
- car_speed[0]=car_speed_save;
- //car_speed_sred[0]=car_speed_sred_save;
- //cout « t «"-момент времени и было пересечения линии Х" « endl ;
- }
- //else
- //cout « t « "-момент времени и не было пересечения линии Х" « endl ;
- //print_all_cars(car_position,car_speed,N);
- print_all_cars_s(car_speed,N);
- cout « endl;
- //cout « t + 1 « "V: " « V/((t + 1)*N) « endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement