#include "stdafx.h"
#include "math.h"
#include "stdlib.h"
#include "windows.h"
#define PI 3.1415926
//一.
class LOCATION
{
protected:
double x,y;
public:
virtual double getx()const{return x;}
virtual double gety()const{return y;}
virtual double dist(LOCATION &s) const;
LOCATION(){};
LOCATION(double x,double y):x(x),y(y){};
};
double LOCATION::dist(LOCATION &s) const
{
double xd=s.x-x, yd=s.y-y;
return sqrt(xd*xd+yd*yd);
}
class CIRCLE : public LOCATION
{
double r;
public:
double get_r() const {return r;}
double Girth() const {return 2*PI*r;}
double Area() const {return PI*r*r;}
CIRCLE();
CIRCLE(double x,double y,double r)
{this->x=x; this->y=y; this->r=r;}
};
//二.
class Shape {
public:
virtual double Area() = 0;
};
class Trapezoid : public Shape
{
public:
double x,y,h;
Trapezoid(double x,double y,double h):x(x),y(y),h(h){};
double Area() {return (x+y)*h*0.5;}
};
class Circle : public Shape
{
public:
double r;
Circle(double r):r(r) {};
double Area() { return PI*r*r; }
};
class Triangle : public Shape
{
public:
double x,y;
Triangle(double x,double y):x(x),y(y){};
double Area() { return x*y; }
};
//三.
template
{
T *x;
int size;
int current;
public:
Stack(int size)
{
this->size=size;
current=0;
x = new T[size];
}
~Stack(){ delete []x; }
BOOL push(const T &atom)
{
if(current { x[current]=atom; current++; return TRUE; } else return FALSE; } BOOL pop(T &atom) { if(current { current--; atom = x[current]; return TRUE; } else return FALSE; } }; int main(int argc, char* argv[]) { //一. CIRCLE A(0,3,5), B(3,7,5); printf("A:(%.f,%.f,%.f),Girth: %.2f, Area: %.2f\n",A.getx(),A.gety(),A.get_r(),A.Girth(),A.Area()); printf("B:(%.f,%.f,%.f),Girth: %.2f, Area: %.2f\n",B.getx(),B.gety(),B.get_r(),B.Girth(),B.Area()); double fBX=B.getx(),fBY=B.gety(); printf("A(%.f,%.f), B(%.f,%.f), Distance:%.2f\n",A.getx(),A.gety(),fBX,fBY,A.dist(B)); printf("\n\n"); //二. Trapezoid C(5,8,6); Triangle D(6,8); Circle E(10); printf("Trapezoid:(%.f,%.f,%.f), Area: %.2f\n",C.x,C.y,C.h,C.Area()); printf("Triangle:(%.f,%.f), Area: %.2f\n",D.x,D.y,D.Area()); printf("Circle:(%.f), Area: %.2f\n",E.r,E.Area()); //三. Stack s.push(10); int test=0; s.pop(test); printf("%d\n",test); system("pause"); return 0; }