void ProcesadorConsulta::crearPosicionesNuevas(string palabra1,int posicion1, string palabra2,int posicion2, list<Posicion> & posicionesMinimas)
{
	Posicion pos1;
	Posicion pos2;

	list<Posicion> :: iterator itPosiciones = posicionesMinimas.begin();

	pos1.setPalabra(palabra1);
	pos1.agregarPosicion(posicion1);
	pos2.setPalabra(palabra2);
	pos2.agregarPosicion(posicion2);

	bool encontrado = false;

	list<Posicion> actuales1;
	list<Posicion> actuales2;

	if(posicionesMinimas.size() > 0)
	{

		//Agrego todos los elementos en mi nueva lista
		while(itPosiciones != posicionesMinimas.end())
		{
			Posicion posicionActual = *itPosiciones;

			list<int> pos;

			if(posicionActual.getPalabra() == palabra1)
			{
				pos.push_back(posicion1);
				posicionActual.agregarPosiciones(pos);
				encontrado = true;

			}

			actuales1.push_back(posicionActual);

			itPosiciones++;
		}

		if(!encontrado)
			actuales1.push_back(pos1);

		encontrado = false;
		itPosiciones = actuales1.begin();


		while(itPosiciones != actuales1.end())
		{
			Posicion posicionActual = *itPosiciones;

			list<int> pos;

			if(posicionActual.getPalabra() == palabra2)
			{
				pos.push_back(posicion2);
				posicionActual.agregarPosiciones(pos);
				encontrado = true;
			}

			actuales2.push_back(posicionActual);

			itPosiciones++;

		}

		if(!encontrado)
			actuales2.push_back(pos2);

		posicionesMinimas.clear();
		itPosiciones = actuales2.begin();

		while(itPosiciones != actuales2.end())
		{
			Posicion actual = *itPosiciones;
			posicionesMinimas.push_back(actual);
			itPosiciones++;
		}

	}
	else
	{
		posicionesMinimas.push_back(pos1);
		posicionesMinimas.push_back(pos2);
	}


}
Posicion ProcesadorConsulta::compararPosiciones(Posicion posicionActual, Posicion posicionSiguiente, list<Posicion> & posicionesMinimas)
{

	list<int> posiciones1 = posicionActual.getPosiciones();
	list<int> posiciones2 = posicionSiguiente.getPosiciones();

	list<int> :: iterator itPosiciones1 = posiciones1.begin();
	list<int> :: iterator itPosiciones2;

	int distanciaMinima = 0;
	int distanciaMinimaAnterior = 0;

	Posicion posicionMinima;

	while(itPosiciones1!= posiciones1.end())
	{
		int pos1Actual = *itPosiciones1;

		itPosiciones2 = posiciones2.begin();

		while(itPosiciones2 != posiciones2.end())
		{
			int pos2Actual = *itPosiciones2;

			if(pos1Actual < pos2Actual)
			{
				distanciaMinima = abs(pos2Actual - pos1Actual);

				if(distanciaMinimaAnterior == 0)
					distanciaMinimaAnterior = distanciaMinima;

				if(distanciaMinima < distanciaMinimaAnterior)
				{
					distanciaMinimaAnterior = distanciaMinima;
					posicionesMinimas.clear();
					crearPosicionesNuevas(posicionActual.getPalabra(),pos1Actual,posicionSiguiente.getPalabra(),pos2Actual,posicionesMinimas);
				}
				else
					if(distanciaMinima == distanciaMinimaAnterior)
						crearPosicionesNuevas(posicionActual.getPalabra(),pos1Actual,posicionSiguiente.getPalabra(),pos2Actual,posicionesMinimas);
			}

			itPosiciones2++;

		}

		itPosiciones1++;
	}


	list<Posicion> :: iterator itPosicionesMinimas = posicionesMinimas.begin();
	bool encontrado = false;
	while(itPosicionesMinimas != posicionesMinimas.end() && !encontrado)
	{
		Posicion posicionActual = *itPosicionesMinimas;
		if(posicionActual.getPalabra() == posicionSiguiente.getPalabra())
		{
			posicionMinima = posicionActual;
			encontrado = true;
		}

		itPosicionesMinimas++;
	}

	return posicionMinima;


}