计算机小混子 2022-04-12 22:26 采纳率: 100%
浏览 706
已结题

应输入标识符,如下图报错,都是什么原因,应该怎么改?

#ifndef _POINT_H
#define _POINT_H
class Point {//Piont类的定义
public:
    Point(float x = 0,float y = 0) : x(x), y(y){}
    float getX() const { return x; }
    float getY() const { return y; }
private:
    float x, y;
};
#endif





#include <iostream>
#include "Point.h"
#include <cmath>
using namespace std;
    //直线线性拟合,points为各点,nPiont为点数
float lineFit(const Point Points[], int nPoint);
    float lineFit(const Point Points[], int nPoint) {
        float avgX = 0, avgY = 0;
        float 1xx = 0, 1yy = 0, 1xy = 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++)
        {
            1xx += (points[i].getX() - avgX) * (points[i].getX - avgX);
            1yy += (points[i].getY() - avgY) * (points[i].getY - avgY);
            1xy += (points[i].getX() - avgX) * (points[i].getY - avgY);
        }
        cout << "This line can be fitted by y=ax+b." << endl;
        cout << "a=" << 1xy / 1xx << " ";
        cout << "b=" << avgY - 1xy * avgX / 1xx << endl;
        return static_cast<float>(1xy / sqrt(1xx * 1yy));
    }
    int main()
    {
        Point p[10] = { Point(6,10),Point(14,20), Point(26,30), Point(33,40), Point(46,50), Point(56,60), Point(67,70), Point(75,80), Point(84,90), Point(100,100), };
        float r = lineFit(p, 10);
        cout << "Line coefficient r=" << r << endl;
        return 0;
    }

img

img

img

  • 写回答

1条回答 默认 最新

  • bostonAlen 2022-04-13 00:33
    关注

    1、Points写成了points。
    2、还有变量不能以数字开头命名,你写成了1xx
    float 1xx = 0, 1yy = 0, 1xy = 0;
    3、Points[i].getX写错了,应该写成Points[i].getX()

    
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    class Point {//Piont类的定义
    public:
        Point(float x = 0, float y = 0) : x(x), y(y) {}
        float getX() const { return x; }
        float getY() const { return y; }
    private:
        float x, y;
    };
    
    //直线线性拟合,points为各点,nPiont为点数
    float lineFit(const Point Points[], int nPoint);
    float lineFit(const Point Points[], int nPoint) 
    {
        float avgX = 0, avgY = 0;
        float xx = 0, yy = 0, xy = 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++)
        {
            xx += (Points[i].getX() - avgX) * (Points[i].getX() - avgX);
            yy += (Points[i].getY() - avgY) * (Points[i].getY() - avgY);
            xy += (Points[i].getX() - avgX) * (Points[i].getY() - avgY);
        }
        cout << "This line can be fitted by y=ax+b." << endl;
        cout << "a=" << xy / xx << " ";
        cout << "b=" << avgY - xy * avgX / xx << endl;
        return static_cast<float>(xy / sqrt(xx * yy));
    }
    int main()
    {
        Point p[10] = { Point(6,10),Point(14,20), Point(26,30), Point(33,40), Point(46,50), Point(56,60), Point(67,70), Point(75,80), Point(84,90), Point(100,100), };
        float r = lineFit(p, 10);
        cout << "Line coefficient r=" << r << endl;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月12日