⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sao3c.h

📁 一个包含若干个类
💻 H
字号:
/*
 * Copyright (c) 2005,Zhao Yanglei
 * All rights reserved.

 * File name:sao3c.h
 * Version: 0.4.1
 * Author:sao3
 * Date: 2005-12-8
 * Description:A header includes classes reusable written by sao3.
                Definitions are in sao3c.cpp
 * Class(es) included: Time
                       Date
                       Complex
                       Vector3D
 */

#ifndef _SAO3C_H
#define _SAO3C_H

#include <iostream>
#include <cmath>

#include "sao3f.h"

using namespace std;

const double PI = 3.1415926535897932384626433832795;

class Time{

    friend ostream &operator<<(ostream &, const Time &);
    
public:
    // constructor
    Time(int = 0, int = 0, int = 0);
    Time(const Time &);
    
    // set member(s)
    void setTime(int, int, int);
    Time &incHour(int = 1);
    Time &incMinute(int = 1);
    Time &incSecond(int = 1);
    
    Time &decHour();
    Time &decMinute();
    Time &decSecond();
    
    // get member(s)
    int Hour() const;
    int Minute() const;
    int Second() const;
    
    // operator(s)
    bool operator==(const Time &) const;
    bool operator!=(const Time &) const;
    
private:
    int hour;
    int minute;
    int second;
};

class Date{
    friend ostream &operator<<(ostream &, const Date &);
    
public:
    // constructor
    Date(int = 2000, int = 1, int = 1);
    Date(const Date &);
    
    // set member(s)
    void setDate(int, int, int);
    Date &incYear(int = 1);
    Date &incMonth(int = 1);
    Date &incDay(int = 1);
    
    // get member(s)
    inline int Year() const;
    inline int Month() const;
    inline int Day() const;
    
    bool leapyear() const;
    bool leapyear(int) const;
    int endofmonth() const;
    
    // operator(s)
    bool operator==(const Date &) const;
    bool operator!=(const Date &) const;

private:
    static const int days[];
    int year;
    int month;
    int day;
};

class Complex{
    friend ostream &operator<<(ostream &, const Complex &);
    
    // double & Complex
    friend inline Complex operator+(double, const Complex &);
    friend inline Complex operator-(double, const Complex &);
    friend Complex operator*(double, const Complex &);
    friend Complex operator/(double, const Complex &);
    
public:
    // constructor
    Complex(double = 0, double = 0);
    Complex(const Complex &);
    
    // set member(s)
    void setComplex(double, double);
    
    // get member(s)
    double Real() const;
    double Image() const;
    double Modules() const;
    double Arg() const;
    
    // operator(s)
    // Complex & Complex
    bool operator==(const Complex &) const;
    bool operator!=(const Complex &) const;
    
    Complex operator+(const Complex &) const;
    Complex operator-(const Complex &) const;
    Complex operator*(const Complex &) const;
    Complex operator/(const Complex &) const;
    
    void operator+=(const Complex &);
    void operator-=(const Complex &);
    void operator*=(const Complex &);
    void operator/=(const Complex &);
    
    // Complex & double
    Complex operator+(double) const;
    Complex operator-(double) const;
    Complex operator*(double) const;
    Complex operator/(double) const;
    
    void operator+=(double);
    void operator-=(double);
    void operator*=(double);
    void operator/=(double);
    
private:
    double a; // real part
    double b; // image part
};

class Vector3D{
    friend ostream &operator<<(ostream &, const Vector3D &);
    
    // double & Vector3D
    friend Vector3D operator*(double, const Vector3D &);
    
    friend double MixP(const Vector3D &, const Vector3D &, const Vector3D &);
    friend double Cosine(const Vector3D &, const Vector3D &);
public:
    // constructor
    Vector3D(double = 0, double = 0, double = 0);
    Vector3D(const Vector3D &);
    
    // set member(s)
    void setVector3D(double, double, double);
    
    // get member(s)
    double X() const;
    double Y() const;
    double Z() const;
    double Modules() const;
    
    // operator(s)
    // Vector3D & Vector3D
    bool operator==(const Vector3D &) const;
    bool operator!=(const Vector3D &) const;
    
    Vector3D operator+(const Vector3D &) const;
    Vector3D operator-(const Vector3D &) const;
    Vector3D operator*(const Vector3D &) const; // vector product
    double operator%(const Vector3D &) const; // scalar product
    
    void operator+=(const Vector3D &);
    void operator-=(const Vector3D &);
    void operator*=(const Vector3D &);
    
    // Vector3D & double
    Vector3D operator*(double) const;
    Vector3D operator/(double) const;
    
    void operator*=(double);
    void operator/=(double);
    
private:
    double x;
    double y;
    double z;
};

class Rational{
    friend ostream &operator<<(ostream &, const Rational &);
    
public:
    // constructor
    Rational(long = 0, long = 1);
    Rational(const Rational &);
    
    // set member(s)
    void setRational(long, long);

    // get member(s)
    long Numerator() const;
    long Denominator() const;
    double Value() const;
    
    void Reduct();
    
    // operator(s)
    // Rational & Rational
    bool operator==(const Rational &);
    bool operator!=(const Rational &) const;
    
    Rational operator+(const Rational &) const;
    Rational operator-(const Rational &) const;
    Rational operator*(const Rational &) const;
    Rational operator/(const Rational &) const;
    
    void operator+=(const Rational &);
    void operator-=(const Rational &);
    void operator*=(const Rational &);
    void operator/=(const Rational &);
    
    // Rational & long

    Rational operator+(long) const;
    Rational operator-(long) const;
    Rational operator*(long) const;
    Rational operator/(long) const;
    
    void operator+=(long);
    void operator-=(long);
    void operator*=(long);
    void operator/=(long);
    
private:
    int num;
    int de;
};

#endif // _SAO3C_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -