Witam znalazłem takie zadanie:
https://scr.hu/l0q6aR
I zrobiłem je tak:
#include <iostream>
#include <string>
#include <fstream>
#include <time.h>
using namespace std;
struct s{
float px=0;
float py=0;
};
void paproc(s*pkt, const string &filename, const int &n);
int main()
{
const int n = 10000;
s punkt;
punkt.px = 0;
punkt.py = 0;
srand(time(NULL));
const string filename = "plik.txt";
paproc(&punkt, filename, n);
}
void paproc(s*pkt, const string &filename,const int &n)
{
fstream plik;
plik.open(filename, ios::out);
s*tmp;
tmp = new s;
tmp->px = pkt->px;
tmp->py = pkt->py;
int i = 0;
plik << "Paproc" << endl << pkt->px << " " << pkt->py << endl;
for (int j = 0; j < n; ++j)
{
i = rand() % 100;
if (i < 85)
{
pkt->px = 0.85*tmp->px + 0.04*tmp->py;
pkt->py = -0.04*tmp->px + 0.85*tmp->py + 1.6;
}
else if ((i >= 85) && (i < 92))
{
pkt->px = -0.15*tmp->px + 0, 28 * tmp->py;
pkt->py = 0.26*tmp->px + 0.24*tmp->py + 0.44;
}
else if ((i >= 92) && (i < 99))
{
pkt->px = 0.20*tmp->px - 0.26*tmp->py;
pkt->py = 0.23*tmp->px + 0.22*tmp->py + 1.6;
}
else
{
pkt->px = 0;
pkt->py = 0.16*tmp->py;
}
plik << pkt->px << " " << pkt->py << endl;
}
}
Ale coś źle te punkty się losują bo w pliku zawsze x ma 0,a y ma albo 0.44,albo 1.6 z tym ,że 1.6 znacznie częściej.Coś źle zapisałem przy działaniu na pkt?Bo ja błędu nie moge znaleźć,a moze źle go przekazałem do funkcji?