C++ Bc. 43 cpp: Porovnání verzí
m Založena nová stránka: <pre> // kruhova parcela ma polomer 1 se stredem v bode (1, 1) // koze je uvazana na provaze delky r=1 v bode (1, 0) // nahodne vygenerovany bod na zahrade // true/false -... |
mBez shrnutí editace |
||
| Řádek 49: | Řádek 49: | ||
} | } | ||
</pre> | </pre> | ||
Příklad výstupu: | |||
1 39.21 39.21 | |||
2 39.06 39.13 | |||
3 39.07 39.11 | |||
4 38.86 39.05 | |||
5 39.04 39.05 | |||
6 38.95 39.03 | |||
7 38.96 39.02 | |||
8 39.10 39.03 | |||
9 39.29 39.06 | |||
10 39.04 39.06 | |||
[ [[C++ Bc. 43 | Zpět]] ] | [ [[C++ Bc. 43 | Zpět]] ] | ||
Aktuální verze z 27. 1. 2011, 13:54
// kruhova parcela ma polomer 1 se stredem v bode (1, 1)
// koze je uvazana na provaze delky r=1 v bode (1, 0)
// nahodne vygenerovany bod na zahrade
// true/false - koza na nej dosahne/nedosahne
bool bod()
{
const double r = 1; // pro r=1.1583... spase koza 50% plochy
double x, y, dx, dy, dx2;
do {
x = 2.0*rand()/(RAND_MAX + 1.0);
y = 2.0*rand()/(RAND_MAX + 1.0);
dx = x - 1.0;
dy = y - 1.0;
dx2 = dx*dx;
}
while (dx2 + dy*dy > 1.0); // bod musi lezet na parcele
return dx2 + y*y <= r*r; // koza dosahne na bod
}
int main()
{
using namespace std;
srand(time(0));
const int M = 10;
const int N = 100000;
int total = 0;
for (int m=1; m<=M; m++)
{
int priznive = 0;
for (int n=1; n<=N; n++)
{
if (bod()) priznive++;
}
total += priznive;
cout << setw(3) << m
<< setprecision(2) << fixed << setw(9) << 100.0*priznive/N
<< setprecision(2) << fixed << setw(9) << 100.0*total/m/N
<< endl;
}
}
Příklad výstupu:
1 39.21 39.21 2 39.06 39.13 3 39.07 39.11 4 38.86 39.05 5 39.04 39.05 6 38.95 39.03 7 38.96 39.02 8 39.10 39.03 9 39.29 39.06 10 39.04 39.06
[ Zpět ]