Description
封装一个模板数组类Array,支持一下操作:
1. 构造函数Array(int n),将数组初始化为n个存储空间;
2. 函数input(int n),读取最多n个元素,但不能超过数组存储空间的上限;
3. 函数print(int m),输出最多m个元素,但不能超过数组已存储的元素个数。
封装一个复数类CPLX,用来处理复数功能和运算,能支持你的Array类使用。
-----------------------------------------------------------------------------
你设计两个类:Array类和CPLX类,使得main()函数能够运行并得到正确的输出。调用格式见append.cc
Input
输入为两部分,分别是一组实数测试样例和一组复数测试样例。
这两组测试样例都以两个正整数n和m开始,且n和m都小于1000,n表示需要输入n个实数(或复数),m表示需要输出m个实数(或复数)。测试样例的第二行开始为n个实数(或复数)。其中每个复数输入为两个实数,前者为实部,后者为虚部。
Output
每组测试样例对应n行输出,每行输出一个实数(或复数),输出顺序与输入顺序一致。复数的输出格式为“(a, bi)”的形式,其中a为实部、b为虚部。
Sample Input
4 5
6 8 7 5
5 4
1 2 1 1 2 2 1 3 2 1
Sample Output
6
8
7
5
(1, 2i)
(1, 1i)
(2, 2i)
(1, 3i)
HINT
Accepted Code
#include <iostream>
using namespace std;
class CPLX
{
private:
double x,y;
public:
CPLX(double a=0,double b=0):x(a),y(b) {}
friend istream &operator >>(istream &is, CPLX &p)
{
cin>>p.x>>p.y;
}
friend ostream&operator <<(ostream &os,const CPLX &p)
{
cout<<"("<<p.x<<", "<<p.y<<"i)";
}
};
template<class T>
class Array
{
private :
T array[1000];
int n;
public:
Array(T x)
{
array[0]=x;
}
void input(int a)
{
n=a;
for(int i=0; i<n; i++)
{
cin>>array[i];
}
}
void print(int b)
{
int k=min(n,b);
for(int j=0; j<k; j++)
{
cout<<array[j]<<endl;
}
}
};
int main()
{
int m, n;
cin >> n >> m;
Array<double> db(1000);
db.input(n);
db.print(m);
cin >> n >> m;
Array<CPLX> cp(1000);
cp.input(n);
cp.print(m);
}