Beispiel #1
0
/* Este metodo tem a funcao de ler todos os elementor que o usuario digitar*/
void Interface::lerVetor(Conjunto &Vet)
{//inicio
         int i=0, elemento=0;
         for(int i=0; i<Vet.obterTamanho();){//1° repita
             cout<<"Vetor["<<i<<"]=";
             cin>>elemento;         
             if(!Vet.atribuir(elemento)){//Se atribur retornar 0 ele n poderá impedir o usuario de digitar elementos repetidos
             	cout<<"  Elemento repetido, Digite novamente..."<<std::endl;}
             else i++;
         }//fim 1° repit
}//fim do metodo ler vetor
Beispiel #2
0
void Interface::escreverVetor(const Conjunto &Vet)
{//Inicio     
     cout<<"[ ";
     int elemento;
     for(unsigned int pos=0; pos<Vet.obterIndiceUso(); pos ++){
                Vet.obter(pos,elemento);
                cout<<elemento<<" ";  
     }
     cout<<"]";
     
}//Fim do metodo Escrever Vetor
Beispiel #3
0
void check_crear_conjunto() {

  Conjunto<int> c;
  ASSERT_EQ(c.pertenece(1), false);
  ASSERT_EQ(c.pertenece(2), false);


  c.insertar(1);
  ASSERT_EQ(c.pertenece(1), true);
  ASSERT_EQ(c.pertenece(2), false);

}
int main(int argc, const char * argv[])
    {
        Conjunto C1;
        for(int k=1; k<=5; k++)
            C1.agrega(k);
        Conjunto C2;
        C2.agrega(2);
        C2.agrega(2);
        C2.agrega(4);
        C2.agrega(5);
        C2.agrega(6);
        C1.despliega();
        C2.despliega();
        Conjunto D;
        D = C1 + C2;
        D.despliega();
        D = C1 - C2;
        D.despliega();
        D = C1 * C2;
        D.despliega();
    return 0;
}
void krukal_like(Grafo *g, vector< pair<int, int> > relacao2){
	//map<int, vector< int * > > at;
	/*cada vector<pair <int *, int*> > funciona, na verdade, como uma lista de arvores de tamanho t, onde t é seu indice em map. Portanto, uma lista de arvores da forma T^(t) 
	I^(t), do algorito original, nada mais é senao os indices do t-ésimo vector do map*/
	//int *grausChegada = new int[relacao->getQuantVertices()];
	at[0].push_back(new int[g->getQuantArestas()]);
	for (int i=0; i<g->getQuantArestas(); i++) at[0][0][i] = 0;
	map<int, vector<Conjunto * > > conjuntos;
	Conjunto *conjunto = new Conjunto(g->getQuantVertices());
	conjuntos[0].push_back(conjunto);
	for (int t=1; t<=g->getQuantVertices()-1; t++){
		vector<int * > It = at[t-1];
		vector<Conjunto* > veco = conjuntos[t-1];
		// cout<<"Iteracao "<<t<<endl;
		for (int i=0; i<It.size(); i++){
			Conjunto *conjIt = veco[i];
			vector <Aresta *> max = maximal(g, It[i], conjIt, relacao2);
			//cout<<"size = "<<max.size()<<" obj = "<<max[0]->getPeso1()<<" , "<<max[0]->getPeso2()<<endl;
			
			// ///TRACE
			// int pesodo1=0, pesodo2=0;
			// cout<<"\tSubarvore "<<i+1<<endl;
			// for (int zutiu=0; zutiu<g->getQuantArestas(); zutiu++){
			// 	if (It[i][zutiu]==1){
			// 		cout<<"\t\t"<<(g->get_allArestas())[zutiu]->getOrigem()<<" "<<(g->get_allArestas())[zutiu]->getDestino()<<" "<<(g->get_allArestas())[zutiu]->getPeso1()<<" "<<(g->get_allArestas())[zutiu]->getPeso2()<<endl;
			// 		pesodo1+=(g->get_allArestas())[zutiu]->getPeso1();
			// 		pesodo2+=(g->get_allArestas())[zutiu]->getPeso2();
			// 	}
			// }
			// cout<<"\t\t("<<pesodo1<<","<<pesodo2<<")"<<endl;
			// cout<<"\t\tLista de arestas não dominadas entre si que não estão nesta subárvore e não ciclo:";
			// //TRACE


			for (int a=0; a<max.size(); a++){
				if (conjIt->compare(max[a]->getOrigem(), max[a]->getDestino())==false){
					// cout<<" "<<max[a]->getOrigem()<<"-"<<max[a]->getDestino();
					int * arvore = new int[g->getQuantArestas()];
					for (int p=0; p<g->getQuantArestas(); p++) arvore[p] = It[i][p];
					arvore[max[a]->getId()] = 1;
					Conjunto * auxxx = new Conjunto(g->getQuantVertices());
					auxxx->copia(conjIt);
					auxxx->union1(max[a]->getOrigem(), max[a]->getDestino());
					conjuntos[t].push_back(auxxx);
					at[t].push_back(arvore);
				}
				//}
			}
			// cout<<endl;   
		}
		// cout<<endl;
			// retira duplicatas
			for (int i=0; i<at[t].size(); i++){
				for (int j=i+1; j<at[t].size(); j++){
					if (isEgal(at[t][i], at[t][j], g->getQuantArestas())){
						at[t].erase(at[t].begin()+j);
						conjuntos[t].erase(conjuntos[t].begin()+j);
						j--;
					}
				}
			}
	}

	//return at[g->getQuantVertices()-1];
	
}
Beispiel #6
0
int main()
{
	int num, p = 0, elem, opc, iteraciones = 0, checker = 0;
	
	Conjunto Obj;
	
	while(true)
	{
		cout<<endl<<endl<<"Por favor seleccione la opcion que desea realizar: "<<endl;
		if(iteraciones > 0)
		{
			cout<<"1. Insertar un elemento"<<endl;
			cout<<"2. Eliminar un elemento"<<endl;
		}
		else
		{
			cout<<"1. Insertar un elemento"<<endl;
		}
		cin>>opc;
		
		system("cls");
		
		switch(opc)
		{
			case 1:
				cout<<"Ingrese el numero que desea insertar: ";
				cin>>num;
				
				//cout<<Obj.getNumber(num);
								
				Obj.insertar(num, p);
				
				system("cls");
				Obj.imprimir();
		
				p++;
				iteraciones++;
				break;
			case 2:
				cout<<"Ingrese el elemento que desea eliminar: ";
				cin>>elem;
				Obj.eliminar(elem);
				p-=2;
				
				system("cls");
				Obj.imprimir();
		
				p++;
				iteraciones++;
				break;
			default:
				cout<<"Opcion invalida!";
				break;
		}
		
		getch();

	}
	
	system("cls");
	return 0;	
}
Beispiel #7
0
void check_remover_conjunto() {

  Conjunto<int> c;

  c.insertar(2);
  c.insertar(5);
  c.remover(2);
  ASSERT_EQ(c.pertenece(2), false);
  ASSERT_EQ(c.pertenece(5), true);

  c.remover(2);
  c.remover(5);

  ASSERT_EQ(c.pertenece(2), false);
  ASSERT_EQ(c.pertenece(5), false);

  c.insertar(1);
  c.insertar(2);
  c.insertar(3);
  c.insertar(4);
  c.remover(4);
  ASSERT_EQ(c.pertenece(1), true);
  ASSERT_EQ(c.pertenece(2), true);
  ASSERT_EQ(c.pertenece(3), true);
  ASSERT_EQ(c.pertenece(4), false);
  ASSERT_EQ(c.minimo(),1);
  ASSERT_EQ(c.maximo(),3);
 }
Beispiel #8
0
void check_insertar_conjunto() {

  Conjunto<int> c;
  ASSERT_EQ(c.pertenece(1), false);
  ASSERT_EQ(c.pertenece(2), false);


  c.insertar(1);
  ASSERT_EQ(c.pertenece(1), true);
  ASSERT_EQ(c.pertenece(2), false);

  c.insertar(2);
  ASSERT_EQ(c.pertenece(0), false);
  ASSERT_EQ(c.pertenece(1), true);
  ASSERT_EQ(c.pertenece(2), true);

  c.insertar(4);
  c.insertar(3);
  c.insertar(5);
  ASSERT_EQ(c.pertenece(0), false);
  ASSERT_EQ(c.pertenece(1), true);
  ASSERT_EQ(c.pertenece(2), true);
  ASSERT_EQ(c.pertenece(3), true);
  ASSERT_EQ(c.pertenece(4), true);

}