/**
问题描述: 初始位置(0,0), 每次生成随机位移, 长度指定, 方向随机,
输出每次移动后位置, 直到超过指定的目标距离, 要求输出在文件中
*/
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<cmath>
#define PI 3.1415926
using namespace std;
class Vector {
private :
double x, y;
public:
Vector(double a=0, double b=0, char mode='r'): x(a),y(b) {
if(mode=='p') {
x=a*cos(b/180*PI);
y=a*sin(b/180*PI);
}
}
double getDistance() {
return sqrt(x*x+y*y);
}
Vector operator+(const Vector& b);
friend ofstream& operator<<(ofstream& fout, const Vector& vector);
};
Vector Vector::operator+(const Vector& b) {
return Vector(x+b.x, y+b.y);
}
ofstream& operator<<(ofstream& fout, const Vector& vector) {
fout<<"(x,y)=("<<vector.x<<','<<vector.y<<")\n";
return fout;
}
int main() {
int target=50, step=2;
ofstream fout;
fout.open("E:\\123.txt");
Vector v;
srand(time(NULL));
int i=1;
fout<<"0: "<<v;
while(v.getDistance()<target) {
v=v+Vector(step, rand()%360, 'p');
fout<<i++<<": "<<v;
}
fout<<"平均步长: "<<(v.getDistance()/(i-1))<<endl;
}
问题描述: 初始位置(0,0), 每次生成随机位移, 长度指定, 方向随机,
输出每次移动后位置, 直到超过指定的目标距离, 要求输出在文件中
*/
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<cmath>
#define PI 3.1415926
using namespace std;
class Vector {
private :
double x, y;
public:
Vector(double a=0, double b=0, char mode='r'): x(a),y(b) {
if(mode=='p') {
x=a*cos(b/180*PI);
y=a*sin(b/180*PI);
}
}
double getDistance() {
return sqrt(x*x+y*y);
}
Vector operator+(const Vector& b);
friend ofstream& operator<<(ofstream& fout, const Vector& vector);
};
Vector Vector::operator+(const Vector& b) {
return Vector(x+b.x, y+b.y);
}
ofstream& operator<<(ofstream& fout, const Vector& vector) {
fout<<"(x,y)=("<<vector.x<<','<<vector.y<<")\n";
return fout;
}
int main() {
int target=50, step=2;
ofstream fout;
fout.open("E:\\123.txt");
Vector v;
srand(time(NULL));
int i=1;
fout<<"0: "<<v;
while(v.getDistance()<target) {
v=v+Vector(step, rand()%360, 'p');
fout<<i++<<": "<<v;
}
fout<<"平均步长: "<<(v.getDistance()/(i-1))<<endl;
}