⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 container.cpp

📁 descriere descriere descriere
💻 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 + -