Advertisement
Dzaco

stata

Jun 11th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.30 KB | None | 0 0
  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #include<math.h>
  5. #pragma hdrstop
  6.  
  7. #include "Unit1.h"
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma resource "*.dfm"
  11. TForm1 *Form1;
  12.  
  13.  double pow( const double a , int k )
  14.   {
  15.    double wynik = a;
  16.      for( int i = 0; i < k; i++ )
  17.      {
  18.         wynik *= a;
  19.      }
  20.  
  21.      return wynik;
  22.   }
  23.  
  24. int silnia(int k)
  25. {
  26.  
  27.     int silnia = 1;
  28.     for (int i = 1; i <= k; i++)
  29.     {
  30.         silnia = silnia * i;
  31.     }
  32.     return silnia;
  33. }
  34.  
  35.  
  36. //---------------------------------------------------------------------------
  37. __fastcall TForm1::TForm1(TComponent* Owner)
  38.         : TForm(Owner)
  39. {
  40. }
  41. //---------------------------------------------------------------------------
  42.  
  43. void __fastcall TForm1::Button1Click(TObject *Sender)
  44. {
  45.         double a , t , p , ps = 1 , po = 0 , pk = 0 , rho , wynik , suma;
  46.     int n , m = 0;
  47.  
  48.  
  49.  
  50.  
  51.          n = Edit1->Text.ToInt();
  52.          t = Edit2->Text.ToDouble();
  53.          a = Edit3->Text.ToDouble();
  54.          p = Edit4->Text.ToDouble();
  55.  
  56.  
  57.  
  58.          rho = (a*t) / n;
  59.  
  60.     suma = 0;
  61.     for (int k = 0; k <= n; k++)
  62.         suma = suma + pow(n * rho, k) / silnia(k);
  63.  
  64.     while (1 - ps<p)
  65.     {
  66.         m = m + 1;
  67.         po = suma + (pow(n, n)*pow(rho, n + 1)*(1 - pow(rho, m))) / (silnia(n)*(1 - rho));
  68.  
  69.                 if( po != 0 && po < 10000000000000000000000000000000000000000000000000000000000000 )
  70.                 {
  71.                   po = 1 / po;
  72.                 }
  73.  
  74.         ps = po * ((pow(n, n)*pow(rho, n + m))) / silnia(n);
  75.                 if(ps == 0 || ps > 1000000000000000000000000000 )
  76.                 {
  77.                    ps = 0;
  78.                    break;
  79.                  }
  80.     }
  81.  
  82.        AnsiString opis;
  83.        opis = "liczba miejsc postojowych = ";
  84.        opis += (AnsiString)m;
  85.  
  86.        opisM->Caption = opis;
  87.  
  88.  
  89.  
  90.  
  91.        wynik = 0;
  92.     for (int k = n; k <= n + m - 1; k++)
  93.     {
  94.         pk = (po*pow(n, n)*pow(rho, k)) / silnia(n);
  95.         wynik = wynik + (pk*k*t) / n;
  96.     }
  97.  
  98.     if( po == 0 || ps == 0 ) wynik = 0;
  99.         else wynik = wynik / (1 - ps);
  100.  
  101.  
  102.  
  103.         opis = "Średni czas oczekiwania = ";
  104.         opis += wynik;
  105.  
  106.         opisW1->Caption = opis;
  107.  
  108. }
  109. //---------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement