,,,
.
. 2004
1. 蠠 _________________________________ 3
2. 蠠 _________________________________ 5
3. 堠 _________________________________ 8
4. _______________________________ 11
5. _________________________________ 12
. .
, , (. . 1).
|
. 1
r, :
(1.1)
: r ;
k .
k . k=0 .
, N . . ( - ) :
(1.2)
:
, (.. ). , . , .
24- . .
. .
. , . . :
;
.
r. :
, .
, .
(1.1).
- [0 - 1].
, , , . , [0 - 1]. [0 - 1] n , , , n. ; . (1.1) :
;
;
.
(.) .
, , , , ,
, ( (1.2)).
, , , , , :
. . 3.
. 3
, . . , :
(1.3)
- ( ).
:
(1.4)
:
(1.5)
[0 - 1] , (1.5) :
(1.6)
(1.6) , , .
C Borland C++ 3.1.
-
Kas1.c :
float RND_DIG (void) - [0, 1];
void massive (void) - ;
float _tau(void) - ;
float time_to(void) - . 蠠 lambda;
void inf (void) - .
1. :
A:\Kas1.exe
2. :
\\ :
() .
3. :
:
lambda
4. :
tau_min .
4. :
tau_max .
5. :
( .):
hours - .
6. :
:
MO - .
7. :
:
SKO - .
8. , .
5.
/* */
#include<stdio.h> // -
#include<conio.h> //
#include<math.h> //
#include<alloc.h> // .
//
float RND_DIG( void ); // - .
void inf( void); // - -
void massive( void ); // -
float _tau( void ); // -
float time_to ( void ); //
//
float
tau_min, // . -
tau_max, // . -
*tau, // . -
current_time, // .
minutes, // .
lambda, // - -
enter_time_, //
MO, // . - -
SKO, // . - -
t_free, // .
t_free_av, // .
serve_av, // . % -
refuse_av, // . % -
N0=7836, // 1- .
NI=4792, // 2- .
N, // N0 NI
ND; // 4 N
int
m, // -
i, // .
enter, // -
hours, //
serve, // - -
refuse, // - -
stand, // -
INDPAS; //
//
void main(void)
{
inf(); // c
textcolor( 14 ); //
textbackground( 1 );
clrscr(); //
/* */
printf("\n████████████████████████████████████████████████████████████████████████████████");
for(i=1;i<=21;i++)
printf("█ █");
printf("████████████████████████████████████████████████████████████████████████████████");
gotoxy(10,7);
do
{
printf("\n█\t "
" \\ :");
scanf( "%d", &m );
}
while( (m<=0)||(m>=100) );
do
{
printf( "\n█\t "
" " );
printf( "\n█\t\t :" );
scanf( "%f", &lambda );
}while( lambda<=0 );
clrscr();
//
printf("\n████████████████████████████████████████████████████████████████████████████████");
for(i=1;i<=21;i++)
printf("█ █");
printf("████████████████████████████████████████████████████████████████████████████████");
gotoxy(5,3);
do
{
printf( "\n█\n█\t " );
printf( "\n█\t\t\t :" );
scanf( "%f", &tau_min );
}while( tau_min<=0 );
do
{
printf( "\n█\t " );
printf( "\n█\t\t\t :" );
scanf( "%f", &tau_max );
}while( tau_max<=tau_min );
do
{
printf( "\n█\t ( .):" );
scanf( "%d", &hours );
}while( hours<=0 );
do
{
printf("\n█\t ");
printf( "\n█\t\t :");
scanf( "%f", &MO );
}while( MO<=0 );
do
{
printf( "\n█\t ");
printf( "\n█\t :");
scanf( "%f", &SKO );
}while( SKO<=0 );
massive(); //
minutes=floor( hours*60 ); //
enter=0; //
serve=0; //
refuse=0; //
t_free=0; //
current_time=0; //
enter_time_=time_to(); //
/*
for( current_time=0; current_time<=minutes; current_time++ )
{
/* - - */
if( current_time )
for( i=1; i<=m ;i++)
if( tau[i] ) // , -
tau[i]--; // 1 .
else // ,
t_free++; // .
if( enter_time_<=current_time )
{
enter++; // ,
enter_time_=time_to(); // , ?
i=1; // 1-
INDPAS=1; //
do
{
if( tau[i]<=0 ) // ,
{ //- ,
tau[i]=_tau();
INDPAS=0; //,
}
i++; //
}while((i<=m) && (INDPAS==1));
if( INDPAS==1 ) // ,
refuse++;
if( INDPAS==0) // ,
serve++;
}
}
stand=0; //
i=1; //
do
{
if( tau[i]>0 ) // - ,
stand++; // -
i++; //
}while( i<=m );
serve-=stand; // -
t_free_av=(float)t_free/m; // .
serve_av=(float)serve/enter; // . %
refuse_av=(float)refuse/enter; // . %
textcolor(1); //
textbackground(2);
clrscr();
_setcursortype( _NOCURSOR );
/*
//
printf("\n████████████████████████████████████████████████████████████████████████████████");
for(i=1;i<=21;i++)
printf("█ █");
printf("████████████████████████████████████████████████████████████████████████████████");
gotoxy(3,3);
printf( "\n█\n█\t╔════════════════════════════════════════════════════════════╗ ");
printf(" \n█\t║ %d : %d .",m,hours );
gotoxy(70,6);
printf("║");
printf(" \n█\t║ %d .", enter );
gotoxy(70,7);
printf("║");
printf(" \n█\t║");
gotoxy(70,8);
printf("║");
printf(" \n█\t║\n█\t║ %d ().", serve);
gotoxy(70,9);
printf("║");
printf(" \n█\n█\t║ 蠠 %d ().", refuse);
gotoxy(70,10);
printf("║");
printf(" \n█\n█\t║ %d (). ", stand);
gotoxy(70,11);
printf("║");
printf(" \n█\n█\t║ ⠠ %.2f%%", serve_av*100);
gotoxy(70,12);
printf("║");
printf(" \n█\n█\t║ 蠠 %.2f%%", refuse_av*100);
gotoxy(70,13);
printf("║");
printf(" \n█\n█\t║ : %.0f. %.0f . ",floor( t_free/60 ),
t_free-floor( t_free/60 )*60 );
gotoxy(70,14);
printf("║");
printf(" \n█\n█\t║ 1 : %.0f. %.0f .",
floor( t_free_av/60 ), t_free_av-floor( t_free_av/60 )*60);
gotoxy(70,15);
printf("║");
gotoxy(70,16);
printf("║");
printf(" \n█\t╚════════════════════════════════════════════════════════════╝ ");
getch();
}
// 0 1
float RND_DIG (void)
{
float
x; // 0 1
N=(NI*N0);
ND=floor(N/100);
ND=(ND/10000-floor(ND/10000))*10000; // 2
N0=NI;
NI=ND;
x=ND/9999;
return x;
}
//- -
void massive( void )
{
int i;
tau=(float *)malloc( (m+1)*sizeof(float) );
/* */
for(i=1; i<=m; i++)
tau[i]=0;
}
// - . -
float _tau( void )
{
float
x, // x
y, // y
z, // z
tau_; //
//
//---------------------
if( floor ( ( float )i/2 )==ceil( ( float )i/2 ) )
{
x=RND_DIG(); // .
y=RND_DIG(); // .
if( x>=.0001) // , z
z=sqrt( -2*log( x ) )*sin( 2*M_PI*y );
else
{
if( sin( 2*M_PI*y )<=0 )
z=0; // , z=0
else
z=(float)minutes/2; // 2- - ,
} //- z .
tau_=MO+z*SKO; // -
if( tau_<0 ) // , 1 .
tau_=1;
}
else
{
x=RND_DIG(); // .
/* - */
//--------------------------------------------------
tau_=floor( tau_min+x*( tau_max-tau_min )+.5);
}
return floor( tau_+.5 ); //
}
// - - .
// - lambda
// ============================================================
float time_to( void )
{
int
j; // - -
float
x, // . -
tau, //
a, // - -
n, //
S; // - -
n=floor( minutes/2+0.5 );
x=RND_DIG(); // .
tau=0;
j=0;
a=exp( (lambda * (-1)) ); // . - -
S=0;
do
{
if( S>=x && x<S+a ) // - [S ; S+a)
break;
tau++;
j++;
S+=a;
a*=lambda/j;
}
while( tau<=n );
return current_time+tau; // -
}
. . 2004
Copyright (c) 2025 Stud-Baza.ru , , , .