第五周项目1-体验常成员函数

设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等。在设计中,由于求距离、求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改。

/*
* Copyright (c) 2015,烟台大学计算机学院
* All right reserved.
* 作者:邵帅
* 文件:Demo.cpp
* 完成时间:2015年04月08日
* 版本号:v1.0
*/
#include <iostream>
#include <cmath>
using namespace std;
class CPoint
{
private:
    double x;  // 横坐标
    double y;  // 纵坐标
public:
    CPoint(double xx=0,double yy=0);
    double Distance1(CPoint p) const; //两点之间的距离(一点是当前点——想到this了吗?,另一点为p)
    double Distance0() const;          // 到原点(0,0)的距离
    CPoint SymmetricAxis(char style) const;//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称
    void input();  //以x,y 形式输入坐标点
    void output(); //以(x,y) 形式输出坐标点
};
CPoint::CPoint(double xx,double yy):x(xx),y(yy) {};
double CPoint::Distance1(CPoint p) const
{
    double s;
    s=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
    return s;
}
double CPoint::Distance0() const
{
    return (sqrt(x*x+y*y));
}
CPoint CPoint::SymmetricAxis(char style) const
{
    CPoint p;
    switch (style)
    {
        case 'x':
            p.x=x;
            p.y=-y;break;
        case 'y':
            p.x=-x;
            p.y=y;break;
        case 'o':
            p.x=-x;
            p.y=-y;break;
        default:
            cout<<"Wrong input!"<<endl;
    }
    return p;
}
void CPoint::input()
{
    char ch;
    cout<<"Please input the point(x,y):";
    while(1)
    {
        cin>>x>>ch>>y;
        if (ch==',')
            break;
        cout<<"Wrong style,please input agein."<<endl;
    }
}
void CPoint::output()
{
    cout<<"("<<x<<", "<<y<<")"<<endl;
}

int main() //测试数据,来自贺老
{
    double distance;
    CPoint p1,p2,p;
    cout<<"第1个点p1,";
    p1.input();
    cout<<"第2个点p2,";
    p2.input();
    distance=p1.Distance1(p2);
    cout<<"两点的距离为:"<<distance<<endl;
    distance=p1.Distance0();
    cout<<"p1到原点的距离为:"<<distance<<endl;
    p=p1.SymmetricAxis('x');
    cout<<"p1关于x轴的对称点为:";
    p.output();
    p=p1.SymmetricAxis('y');
    cout<<"p1关于y轴的对称点为:";
    p.output();
    p=p1.SymmetricAxis('o');
    cout<<"p1关于原点的对称点为:";
    p.output();

    return 0;
}

运行结果:

@ Mayuko

时间: 2024-10-25 05:50:26

第五周项目1-体验常成员函数的相关文章

项目一:体验常成员函数

[项目1-体验常成员函数] 设计平面坐标点类,计算两点之间距离.到原点距离.关于坐标轴和原点的对称点等.在设计中,由于求距离.求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改. class CPoint { private: double x; // 横坐标 double y; // 纵坐标 public: CPoint(double xx=0,double yy=0); double Distance1(CPoint p) const

第五周 项目一-体验成员函数

问题 设计平面坐标点类,计算两点之间距离.到原点距离.关于坐标轴和原点的对称点等.在设计中,由于求距离.求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改. 代码 #include <iostream> #include <Cmath> using namespace std; class CPoint { private: double x; // 横坐标 double y; // 纵坐标 public: CPoint(d

【项目1-体验常成员函数】

设计平面坐标点类,计算两点之间距离.到原点距离.关于坐标轴和原点的对称点等.在设计中,由于求距离.求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改. ?class CPoint { private:   double x;  // 横坐标   double y;  // 纵坐标 public:   CPoint(double xx=0,double yy=0);   double Distance1(CPoint p) const; /

体验常成员函数

输入代码: /* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:sum123.cpp * 作 者:林海云 * 完成日期:2015年 4月7日 * 版 本 号:v2.0 * * 问题描述: 设计平面坐标点类,计算两点之间的距离.到原点距离.关于坐标轴和原点的对称点等. 在设计中,由于求距离.求对称点等操作对原对象不能造成任何改变,所以,将这些函 数设计为常成员函数是合适的,能够避免数据成员被无意更改. * 输入描述:输入

HeyWeGo第五周项目总结

HeyWeGo第五周项目总结 项目内容 使用java程序开发一款扫雷游戏 游戏项目规划: 确定游戏中方块格子的个数 确定游戏中地雷的个数(初始10个),完成布雷 计算每个方块周围的雷数,在方块周围本身没有地雷的情况下,统计周围地雷的个数 若周围没有地雷则翻开周围的空白方格,直到周围有附近地雷的格子 设计一个检测是否挖完所有的雷的方法 设定左键点击为翻开 设定右键点开为标记 项目进展 整合并调试修改各队员分段编写的代码,游戏已实现,已经修补上周不能右键标记部分. 完整代码 import java.

十五周 项目1 工资数据的输入

/* 输入员工工资1000-10000之间,并按从大到小输出*/ #include <iostream> using namespace std; int main( ) { double salarys[500]; int n=0; double t; while(cin>>salarys[n]) { n++; //从cin流读取数据 } //将n名职工的工资排序后输出 for(int i=0; i<n; i++) for(int j=0; j<n-1; j++) {

C++点滴----关于类常成员函数

关于C++中,类的常成员函数 声明样式为:   返回类型 <类标识符::>函数名称(参数表) const 一些说明: 1.const是函数声明的一部分,在函数的实现部分也需要加上const 2.const关键字可以重载函数名相同但是未加const关键字的函数 3.常成员函数不能用来更新类的成员变量,也不能调用类中未用const修饰的成员函数,只能调用常成员函数.即常成员函数不能更改类中的成员状态,这与const语义相符. 例一:说明const可以重载函数,并且实现部分也需要加const #in

C/C++中的常成员函数

代码: 1 #include <iostream> 2 3 using namespace std; 4 5 class A{ 6 public: 7 void func1(){ 8 cout<<"func1"<<endl; 9 } 10 void func1()const{ 11 cout<<"const func1"<<endl; 12 } 13 void func2()const{ 14 cout&l

C++常成员函数 - const 关键字

转自:http://www.cnblogs.com/this-543273659/archive/2011/07/18/2109922.html 一.常成员函数详解 声明:<类型标志符>函数名(参数表)const: 说明: (1)const是函数类型的一部分,在实现部分也要带该关键字. (2)const关键字可以用于对重载函数的区分. (3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数. A.通过例子来理解const是函数类型的一部分,在实