白事礼金可以200麼:悬赏100分关于C++的编程,高手指教!急等!

来源:百度文库 编辑:高校问答 时间:2024/05/05 12:55:38
需要以下题的源程序最好可以运行,急!题比较多大家见谅。
1、 编一个使用派生类的程序,使一个包含圆和圆柱的几何尺寸的类,它使用内部数据建立几何形状并显示它们的尺寸,面积和体积。
2、 根据定义一个复数类(C_Complex),能够实现复数的四则运算,并编写相应的测试程序
定义的复数类(C_Complex), 用运算符的重载的形式实现四则运算:
(1) 运算符重载为友元形式;
(2) 运算符重载为成员函数形式;
3、 在基类中定义一个纯虚函数show(),并在派生类中重新定义show(),使得它以各自的进制(即十六进制,十进制,八进制)输出val。
4、 定义日期类,并为该类重载流操作符"<<"及">>",模拟DOS下的日期(yyyy-mm-dd)设置,要求对日期范围进行检查.
5、 以 Point 类为基础,定义椭圆类和矩形类;再通过椭圆类派生出圆类;通过矩形类派生出正方形类;最后编程测试。

1.3.4

2.参考http://zhidao.baidu.com/question/5654629.html
5.给分再说!

1.编一个使用派生类的程序,使一个包含圆和圆柱的几何尺寸的类,它使用内部数据建立几何形状并显示它们的尺寸,面积和体积.
#include
class circle
{protected:
float r;
float pi;
float area;
public:
circle() {const pi=3.1416;r=0;}
circle(float radius){pi=3.1416;r=radius;}
void print()
{
area=r*r*pi;
cout<<"r="< friend complex operator + (complex &a,complex &b)
{
complex c(0);
c.real=a.real+b.real;
c.imag=a.imag+b.imag;
return c;
}
friend complex operator - (complex &a,complex &b)
{
complex c(0);
c.real=a.real-b.real;
c.imag=a.imag-b.imag;
return c;
}
friend complex operator * (complex &a,complex &b)
{
complex c(0);
c.real=a.real *b.real+a.imag *b.imag;
c.imag=a.imag*b.real+b.imag*a.real;
return c;
}
};
void main()
{
complex A(0),B(0),C(0);
A.assign(10,20);
A.print();
B.assign(30,40);
B.print();
C=A+B;
C.print();
C=B-A;
C.print();
C=A*B;
C.print();
}

3.在基类中定义一个纯虚函数show(),并在派生类中重新定义show(),使得它以各自的基类(即十六进制,十进制,八进制)输出val

#include
#include
class A{
public:
virtual void show()=0;
};
class B:public A{
private:
int val;

public:
void inita (int a){val=a;}
virtual void show(){cout.setf(ios::hex );
cout< cout.setf(ios::dec);
cout< cout.setf(ios::oct);
cout< };
void main(){
B x;
x.inita(23);
x.show();
}
另一种解法:
#include
class base
{
public :virtual void show()=0;};
class hex:public base
{private :
int val;
public :
hex(int v){val=v;}
void show(){ printf("十六进制:%x\n",val);}
};
class dec:public base
{
private:
int val;
public:
dec(int v){val=v;}
void show() {printf("十进制:%d\n",val);}
};
class oct: public base
{private :
int val;
public :
oct(int v){val=v;}
void show(){printf("八进制:%o\n",val);}
};
//------
void main()
{base *px;hex hh(100);dec dd(100);oct oo(100);
px=ⅆpx->show();
px=&hh;px->show();
px=&oo;px->show();
}

4.重载流操作符"<<"及">>",模拟DOS下的日期(yyyy-mm-dd)设置,要求对日期范围进行检查.
#include
class classDate{
private:
int year;
int month;
int day;
public:
classDate (int y=0,int d=0,int m=0){year=y;day=d;month=m;}
int getyear(){return year;}
int getmonth(){return month;}
int getday(){return day;}
friend istream &operator>>(istream &s,classDate &a)
{
int y,m,d;
cout<<"请输入日期:(yyyy-mm-dd)";
cin>>y>>m>>d;
while (y>9999||m>-1||m<-12||d>-1||d<-31)
{
cout<<"输入格式有错,请重新输入日期:(yyyy-mm-dd)";
cin>>y>>m>>d;
}
a.year=y;
a.month=-m;
a.day=-d;
return s;
}
friend ostream &operator <<(ostream &s,classDate a)
{//输出日期
s<<"现在的日期是";
s< s< return s;
}
};
void main()
{//测试程序
classDate date1;
cin>>date1;
cout < }