#define LIMIT 60 //Предельное количество автомобилей на 1 км трассы main() { int GraphDriver,GraphMode; char value[10]; int clc,i,j,uncorrect,iter; int cars_km; //Количество автомобилей на один километр трассы int speed_car[LIMIT]; //Скорость автомобиля int dist_car[LIMIT]; //Расстояние от скоростемера static int dat[LIMIT]; //Выходные данные randomize(); GraphDriver =DETECT; GraphMode = VGAMED; initgraph( &GraphDriver, &GraphMode,""); setfillstyle(1,15); bar(0,0,640,480); setcolor(7); rectangle(0,0,639,479); for(j=0;j<485;j+=10) { for(i=0;i<645;i+=10){rectangle(i,j,i-20,j-20); } } for(cars_km=1;cars_km<41;cars_km++) { //Начинаем с 1 машины на км для контроля for(iter=0;iter<2000;iter++) { //Итерации для минимизации статистической погрешности { //Для количества автомобилей cars_km uncorrect=0; NEW_ITERATION: for(i=0;i100&&dist_car[i]<400&&speed_car[i]>80) uncorrect=1; //Автомобилю в зоне 80 метров приписана чужая скорость //Иначе - считаем измерение корректным if(uncorrect==1) dat[cars_km]++; //Накапливаем статистику } //Выходная графика и рисование setfillstyle(1,7);bar(cars_km*10+120,300,cars_km*10+130,300-200); setfillstyle(1,0);bar(cars_km*10+120,300,cars_km*10+130,300-dat[cars_km]/10); setcolor(0);if(cars_km<9||cars_km%5==0) outtextxy(cars_km*10+122,310,itoa(cars_km,value,10)); } for(j=0;j<101;j+=20)outtextxy(108,310-15-j*2,itoa(j,value,10)); setcolor(8);rectangle(0,0,639,479); for(j=120;j<301;j+=20) { for(i=150;i<540;i+=20) { rectangle(i,j,i-20,j-20); } } //Выходной график не гладкий и имеет погрешности, обусловленные //примененным методом итерационных вычислений //Достоверности результатов это не снижает //при желании данные можно аппроксимировать любым сглаживающим полиномом getch(); closegraph(); return; }