[1] 授業単元:C++によるプログラミング
[2] 問題文(含コード&リンク):長いので後で書きます。
[3] 環境
 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc 2.90 [3.3] 言語:C++
[4] 期限:1月29日12:00 [5] その他の制限:特にありません

main()で上手くいくようにComplexのデータを<<を用いて出力できるような関数
std::ostream& operator<<(std::ostream& os,Complex& c){
c.print(os);
return os;
} を以下のプログラムに追加・必要であれば修正するようなのですが、どうすればよいのか分かりません。
#include<iostream>

class Complex
{
private: double real; double imag;
public:Complex(){ real = 0.0; imag = 0.0; }Complex(double r,double i){ real = r; imag = i; } ~Complex() {};
double re() const {return real;} double im() const {return imag;}
void set_re(double r){ real = r; } void set_im(double i){ imag = i; }
void print(std::ostream& os) const{
os << real << "+" << imag << "i";
}
};
int main(){
Complex a[3];
a[0] = Complex(1.00,2.00); a[1] = a[0] + Complex(0.00,1.00);
Complex *c = &(a[2]); *c = a[0];
for(int i=0; i<3; i++) std::cout << a[i] << std::endl;
Complex *b = new Complex[3]; for(int i=0; i<3; i++)b[i]=a[i]+Complex(1.00,1.00);
for(int i=0; i<3; i++)std::cout<<b[i]<<std::endl; delete [] b; return 0;
}