C++ Bc. 28 cpp

Z GeoWikiCZ
Verze z 21. 5. 2006, 19:11, kterou vytvořil Cepek (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iomanip>

double rab(double a, double b)        // nahodne cislo z intervalu <a, b>
{
  return a + (b-a)*rand()/(RAND_MAX + 1.0);
}

double pokus()
{
  double novak = rab(16.00, 17.00);   // pan Novak prichazi na zastavku

  double interval = 10.0/60.0;        // interval autobusove linky
  double zpozdeni =  5.0/60.0;        // maximalni zpozdeni
  double bus = 15.00 + 30.0/60.0;     // prvni testovany autobus
  double cas;                         // cas prijezdu autobusu
  bool   obsazen;                     // autobus je/neni obsazen

  do
    {
      bus += interval;
      cas  = bus + rab(0, zpozdeni);

      obsazen = rab(1,5) > 4;         // kazdy paty autobus je obsazen
    }
  while (cas < novak || obsazen);

  return (cas - novak)*60;            // cekani v minutach
}

int main()
{
  using namespace std;

  for (int n=1; n<=10; n++)
    {
      const int N=100000;
      double suma = 0;
      for (int i=0; i<N; i++) suma += pokus();
      
      cout << setw(2) << n << " : " << suma/N << endl;
    }
}

[ Zpět ]