áåñïëàòíî ðåôåðàòû

áåñïëàòíî ðåôåðàòû

 
 
áåñïëàòíî ðåôåðàòû áåñïëàòíî ðåôåðàòû

Ìåíþ

Èìèòàöèîííîå ìîäåëèðîâàíèå íà îñíîâàíèè ïðåäâàðèòåëüíî óñòàíîâëåííûõ çàâèñèìîñòåé áåñïëàòíî ðåôåðàòû

         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;    // Âîçâðàòèì âðåìÿ äî âõîäà ñëåä-ãî êëèåíòà

 }


Ñòðàíèöû: 1, 2