📄 application4.cpp
字号:
#include <iostream>
#include <fstream>
using namespace std;
class Point
{
public:
double x,y;
};
class Line
{
public:
double m, b;
};
class Linear_regress
{
private:
Point* fit_pts;
Line fit_line;
int num_fit_pts;
public:
void perform_regression(Point*, int, int);
};
class Traffic
{
private:
enum {MAX_NUM_ACCID_PTS=200};
Point accid_pts[MAX_NUM_ACCID_PTS];
int index_at_max_accid, num_accid_pts;
Linear_regress& regression_reference;
public:
Traffic(Linear_regress&);
void read_data();
void find_index_at_max_accid();
void calc_lines();
};
void Linear_regress::perform_regression(Point* array_beginning,
int low_subscript, int high_subscript)
{
double c, d, e, f, n;
int i;
c=d=e=f=0.0;
num_fit_pts=high_subscript-low_subscript+1;
fit_pts=array_beginning+low_subscript;
for (i=0; i<num_fit_pts; i++)
{
c += fit_pts[i].x;
d += fit_pts[i].y;
e += fit_pts[i].x*fit_pts[i].x;
f += fit_pts[i].x*fit_pts[i].y;
}
n = num_fit_pts;
fit_line.m = (n*f - c*d)/(n*e - c*c);
fit_line.b = (d*e - c*f)/(n*e - c*c);
cout<<"The best fit line:"<<endl<<" m="<<fit_line.m<<endl<<
" b="<<fit_line.b<<endl<<endl;
}
Traffic::Traffic(Linear_regress& regress_ref_var)
: regression_reference (regress_ref_var),
index_at_max_accid(0), num_accid_pts(0)
{
int i;
for (i=0; i<MAX_NUM_ACCID_PTS; i++)
{
accid_pts[i].x=0;
accid_pts[i].y=0;
}
}
void Traffic::read_data()
{
int i;
ifstream infile(".\\BESTLINE.DAT");
i=0;
do
{
infile>>accid_pts[i].x;
infile>>accid_pts[i].y;
i++;
} while (!infile.eof());
num_accid_pts = i-1;
}
void Traffic::find_index_at_max_accid()
{
int i;
double max;
max = accid_pts[0].y;
for (i=1; i<num_accid_pts; i++)
{
if (accid_pts[i].y >= max)
{
max = accid_pts[i].y;
index_at_max_accid = i;
}
}
}
void Traffic::calc_lines()
{
cout<<"Line before maximum accidents."<<endl;
regression_reference.perform_regression(accid_pts, 0, index_at_max_accid);
cout<<"Line after maximum accidents."<<endl;
regression_reference.perform_regression(accid_pts, index_at_max_accid, num_accid_pts-1);
}
int main ( )
{
Linear_regress regression_object;
Traffic monthly_traffic(regression_object);
monthly_traffic.read_data();
monthly_traffic.find_index_at_max_accid();
monthly_traffic.calc_lines();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -