📄 container.cpp
字号:
#include <iostream.h>
#include <fstream.h>
#include "Container.h"
#include "Punct.h"
#include "Patrat.h"
#include "Cerc.h"
#include "Triunghi.h"
#include "Composite.h"
Container::Container()
{
length=0;
contents=NULL;
}
void Container::add(Figura* fig,int index)
{
if(index<0)
{
cout<<"ERROR: negative index"<<endl;
return;
}
if(contents==NULL)
{
contents=new Figura*[0];
contents[0]=fig;
length=1;
return;
}
if(index>=length)
{
index=length+1;
Figura ** tempVector=new Figura*[index];
for(int i=0;i<length;i++)
tempVector[i]=contents[i];
contents=new Figura*[index];
for( i=0;i<length;i++)
contents[i]=tempVector[i];
contents[length]=fig;
delete [] tempVector;
length++;
return;
}
if(index<length)
{
Figura ** tempVector=new Figura*[index];
for(int i=0;i<length;i++)
tempVector[i]=contents[i];
contents=new Figura*[length+1];
for(i=0;i<index;i++)
contents[i]=tempVector[i];
contents[index]=fig;
for(i=index+1;i<length+1;i++)
contents[i]=tempVector[i-1];
length++;
return;
}
}
void Container::remove(int index)
{
if(index<0 || index>length)
{
cout<<"ERROR: wrong index"<<endl;
return;
}
Figura ** tempVector=new Figura*[length-1];
for(int i=0;i<length-1;i++)
{
if(i<index)
tempVector[i]=contents[i];
else
tempVector[i]=contents[i+1];
}
contents=new Figura*[length-1];
for(i=0;i<length-1;i++)
contents[i]=tempVector[i];
length--;
delete [] tempVector;
return;
}
Figura* Container::get(int index)
{
return contents[index];
}
int Container::size()
{
return length;
}
Cerc * c;
Triunghi * triunghi;
Patrat * p;
ifstream& operator>>(ifstream& input,Container& cont)
{
int x, y;
double l,r;
char co;
int x1,y1,x2,y2,x3,y3;
bool read=false;
while(read != true )
{
if(input.eof()==1)
break;
input>>co;
if(co=='c')
{
input>>x>>y>>r;
c=new Cerc();
c->centru.coord_x=x;
c->centru.coord_y=y;
c->setRaza(r);
cont.add(c,cont.size());
}
else
if(co=='p')
{
input>>x>>y>>l;
p=new Patrat();
p->setLatura(l);
p->origine.coord_x=x;
p->origine.coord_y=y;
cont.add(p,cont.size());
}
else
if(co=='t')
{
input>>x1>>y1>>x2>>y2>>x3>>y3;;
triunghi =new Triunghi();
triunghi->A.coord_x=x1;
triunghi->A.coord_y=y1;
triunghi->B.coord_x=x2;
triunghi->B.coord_y=y2;
triunghi->C.coord_x=x3;
triunghi->C.coord_y=y3;
cont.add(triunghi,cont.size());
}
else
{
input.ignore(9999,'\n');
}
}
return input;
}
ofstream& operator<<(ofstream& out,Container& cont )
{
for(int i=0;i<cont.length;i++)
{
if(cont.contents[i]->tip=='c')
{
Cerc* temp=(Cerc*)cont.contents[i];
out<<*temp;
}
if(cont.contents[i]->tip=='p')
{
Patrat* temp=(Patrat*)cont.contents[i];
out<<*temp;
}
if(cont.contents[i]->tip=='t')
{
Triunghi* temp=(Triunghi*)cont.contents[i];
out<<*temp;
}
if(cont.contents[i]->tip=='d')
{
Composite* temp=(Composite*)cont.contents[i];
out<<temp;
}
}
return out;
}
istream& operator>>(istream& in,Container& cont)
{
return in;
}
ostream& operator<<(ostream& out,Container& cont )
{
for(int i=0;i<cont.length;i++)
{
if(cont.contents[i]->tip=='c')
{
Cerc* temp=(Cerc*)cont.contents[i];
out<<*temp;
}
if(cont.contents[i]->tip=='p')
{
Patrat* temp=(Patrat*)cont.contents[i];
out<<*temp;
}
if(cont.contents[i]->tip=='t')
{
Triunghi* temp=(Triunghi*)cont.contents[i];
out<<*temp;
}
if(cont.contents[i]->tip=='d')
{
Composite* temp=(Composite*)cont.contents[i];
out<<temp;
}
}
return out;
}
void Container::afisare()
{
for(int i=0;i<length;i++)
contents[i]->afisare();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -