void main()
{
using namespace std;
using VECTOR::Vector;
srand(time(0));
double direction;
Vector step;
Vector result(0.0, 0.0);
unsigned long steps = 0;
double target;
double dstep;
cout << "Enter target distance (q to quit):";
while (cin>>target)
{
cout << "Enter step length: ";
if (!(cin>>dstep))
{
break;
}
double a[10000] = {};
while (result.magval()<target)
{
direction = rand() % 360;
step.reset(dstep, direction, Vector::POL);
result = result + step;
int i = 0;
a[i] = step.xval();
//cout << a[i]<<endl;
i++;
steps++;
//fout << result << endl;
}
double max = a[0];
double min = a[0];
for (int i = 0; i < steps; i++)
{
if (max < a[i])
{
max = a[i];
}
if (min>a[0])
{
min = a[0];
}
}
cout << "max: " << max <<" ,"<<"min: " << max << endl;
cout << "After " << steps << " steps,the subject"
"has the following location:\n";
cout << result << endl;
result.polar_mode();
cout << "or\n" << result << endl;
cout << "Average outward distance per step = "
<< result.magval() / steps << endl;
steps = 0.0;
result.reset(0.0, 0.0);
cout << "Enter target distance (q to quit): ";
}
cout << "Bye!\n";
cin.clear();
while (cin.get()!='\n')
{
continue;
}
return ;
}
#ifndef VECTOR_H
#define VECTOR_H
#include <iostream>
namespace VECTOR
{
class Vector
{
public:
enum Mode{RECT,POL};
protected:
private:
double x;
double y;
double mag;
double ang;
Mode mode;
void set_mag();
void set_ang();
void set_x();
void set_y();
public:
Vector();
Vector(double n1, double n2, Mode form = RECT);
void reset(double n1, double n2, Mode form = RECT);
~Vector();
double xval()const{ return x; };
double yval()const { return y; };
double magval()const { return mag; };
double angval()const { return ang; };
void polar_mode();
void rect_mode();
Vector operator+(const Vector & b)const;
Vector operator-(const Vector & b)const;
Vector operator-()const;
Vector operator*(double n)const;
friend Vector operator*(double n, const Vector & a);
friend std::ostream& operator<<(std::ostream & os, const Vector & v);
operator double()const;
Vector magval();
Vector angval();
double magval() const;
double angval() const;
};
}
#endif