Witam serdecznie.
Nie mogę sobie poradzić z konwersją kodu napisanego w C+ na VBA.
Czy może mi ktoś wytłumaczyć, ew. poprawić program w miejscu w którym jest błąd ?
Z góry dziekuję.
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n;
int nk = 0;
double x,y;
float s;
cout << "Podaj liczbe losowanych pkt:" << endl;
cin >> n;
for(int i = 1; i <= n; i++)
{
x = ((double)rand() / (RAND_MAX)) * 2 - 1;
y = ((double)rand() / (RAND_MAX))*2 - 1;
if(x*x + y*y <= 1)
{
nk++;
}
}
cout << "Liczba pkt. w kole wynosi: " << nk << endl;
cout << "Liczba pkt. w kwadracie wynosi: " << n << endl;
s = 4 * (double)nk / n;
cout << "Liczba pi wynosi: " << s;
}
tutaj VBA:
REM ***** BASIC *****
Function WylosujLiczbe(ByRef GranicaDolna As Short, ByRef GranicaGorna As Short) As Short
Randomize()
WylosujLiczbe1 = Int((GranicaGorna - GranicaDolna + 1) * Rnd() + GranicaDolna)
WylosujLiczbe2 = Int((GranicaGorna - GranicaDolna + 1) * Rnd() + GranicaDolna)
End Function
Sub MonteCarlo()
MsgBox "Implementacja metody Monte Carlo w celu wyliczenia liczby Pi"
dim n as integer
dim nk as integer
dim x as double
dim y as double
dim s as double
dim Obliczenia as integer
nk = 0
n = InputBox("Wprowadź liczbę losowanych punktów:"
'MsgBox "sprawdzam dzialanie zmiennej" & n
For iLicznik = 0 to 1 and iLicznik <= n
Next iLicznik
x = (WylosujLiczbe1*2) - 1
y = (WylosujLiczbe2*2) - 1
Obliczenia = z
If (x*x) + (y*y) <= 1 Then nk = nk+1
MsgBox " Liczba punktów w kole wynosi:" & nk
MsgBox " Liczba punktów w kwadracie wynosi:" & n
s = 4*(nk/n)
MsgBox "Liczba Pi to:" & n
End Sub
Nie mam pojęcia gdzie tkwi błąd. To moje pierwsze kroki z językiem.