//数组的使用
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
int a[10]; int b[10];//定义了两个数组
for (int i = 0; i < 10; i++)//进行循环赋值,小心数组越界
{
a[i] = i * 2 - 1;
b[10 - i - 1] = a[i];
}
for (int i = 0; i < 10; i++)//循环输出
{
cout << "a[" << i << "]=" << a[i] << " ";
cout << "b[" << i << "]=" << b[i] << endl;
}
return 0;
}
以下是拟合函数
//Point.h 头文件
#ifndef _POINT_H//条件编译指令和下边#endif相对应
#define _POINT_H//定义_POINT_H符号
class Point//类的定义
{
public:
Point(float x = 0, float y = 0) :x(x), y(y) {}
float getX()const { return x; }
float getY()const { return y; }
private:
int x, y;
};
#endif
//程序源文件
#include "stdafx.h"
#include "Point.h"//使用Point.h头文件
#include<iostream>
#include<cmath>
using namespace std;
float lineFit(const Point points[], int nPoint) {
float avgX = 0, avgY = 0;
float lxx = 0, lyy = 0, lxy = 0;
for (int i = 0; i < nPoint; i++)//计算x,y的平均值,循环计算,每个点都要计算到
{
avgX += points[i].getX() / nPoint;
avgY += points[i].getY() / nPoint;
}
//计算lxx,lyy,lxy的值
for (int i = 0; i < nPoint; i++)
{
lxx += (points[i].getX() - avgX)*(points[i].getX() - avgX);
lyy += (points[i].getY() - avgY)*(points[i].getY() - avgY);
lxy += (points[i].getX() - avgX)*(points[i].getY() - avgY);
}
cout << "This line can be fitted by y = ax+b." << endl;
cout << "a=" << lxy / lxx << "";//计算a
cout << "b=" << avgY - lxy*avgX / lxx << endl;//计算b
return static_cast<float>(lxy / sqrt(lxx*lyy));//返回相关系数r
}
int main(){
Point p[10] = { Point(6,10),Point(14,20), Point(26,30), Point(33,40), Point(46,50), Point(54,60), Point(67,70), Point(75,80), Point(84,90), Point(100,100) };//定义Point数组
float r = lineFit(p, 10);//调用LineFit方法得出关系系数
cout << "Line coefficient r=" << r << endl;
return 0;
}