c++基础数组

先声明后使用

一维数组

类型说明符  数组名【常量表达式】 a【2*3】可以

static int a[10]={0,1,2,3,4}

其余5位自动补0.

类型定义分配空间,参与那些运算

二维数组

第二维必须写后面的值

  

计算最小二乘法

标头.h
class Point {
public:
	Point(float x=0, float y=0):x(x), y(y) {};
	float getX(){ return x;}
	float getY() { return y; }
private:
	float x, y;

};
-------------------------
源文件.cpp
#include<iostream>
#include"标头.h"
#include<cmath>
using namespace std;
float lineFit( Point points[], int nPoint) {
	float avgX = 0, avgY = 0;
	float lxx = 0, lyy = 0, lxy = 0;
	for (int i = 0; i < nPoint; i++)
	{
		avgX += points[i].getX() / nPoint;
		avgY += points[i].getY() / nPoint;
	}
	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 << ":";
	cout << "b=" << avgY - lxy*avgX / lxx << ":";
	return lxy / sqrt(lxx*lyy);
}
int main() {
	Point p[10] = { Point(6,10),Point(14,20),Point(26,30),Point(75,80),Point(84,90),Point(33,40),Point(46,50),Point(54,60),Point(67,70),Point(100,100) };
	float r = lineFit(p, 10);
	cout << "line coefficient r=" << r << endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41761599/article/details/88875560