void TarefaResultadoCaxeiroViajante::run()
{
    qDebug() <<"Iniciou a tarefa do caixeiro viajante";

    int opcao = mensagem.toInt();
    switch (opcao) {
    case 1:
        emit resultado("Druzo, Fabiano e Paulo");
        break;
    case 2:
        emit resultado( buscaMelhorCaminho());
        //emit resultado(pCVAG->caminhoParaString(0));
        break;
    case 3:
        //emit resultado( buscaMelhorCaminho());
        //emit resultado(pCVAG->caminhoParaString(pCVAG->populacao->count() -1));
        break;
    case 4:
        //emit resultado( buscaMelhorCaminho());
        //emit resultado(pCVAG->caminhoParaString(randEntre(0, pCVAG->populacao->count() -1)));
        break;
    default:
        emit resultado("Comando não reconhecido!");
        break;
    }

    qDebug() <<"Finalizou a tarefa do caixeiro viajante";
}
Пример #2
0
int Servicios::recuperarLibro(unsigned int idLibro, Libro **libro)
{
	unsigned int offset = 0;

	string pathArbolPrimario = Parametros().getParametro(CARPETA_DATOS);
	pathArbolPrimario += NOMBRE_BMAS_PRIMARIO;

	ArbolBMasNumerico *arbolP = new ArbolBMasNumerico(pathArbolPrimario, TAMANIO_BLOQUE_BMAS_NUMERICO);

	resultadoOperacion resultado(OK) ;

	Registro* registro = arbolP->buscarRegistroNumerico(idLibro, &resultado);

	if (registro && resultado.getDescripcion() == "ENCONTRADO"){
		offset = registro->getReferencias()->front();
	}
	else{
		return ERROR_LIBRO_INEXISTENTE;
	}


	string rutaArcLibros = Parametros().getParametro(ARCHIVO_LIBROS);

	if (rutaArcLibros == "") return ERROR_RUTA_ARCHIVO_LIBROS;

	ArchivoLibros *archivo = new ArchivoLibros(rutaArcLibros);

	*libro = (archivo->recuperarLibro(offset));

	delete archivo;

	delete arbolP;

	return 0;
}
Пример #3
0
string FechaYHora::setHoraHHMM(){
    time_t     now = time(0);
    struct tm  tstruct;

    char       buf[80];

    tstruct = *localtime(&now);
    strftime(buf, sizeof(buf), "%X", &tstruct);

    string hora="";
    string min="";
    unsigned int i;

    for(i= 0; (i < strlen(buf))&&(buf[i]!= ':'); i++){
    	hora+=buf[i];
    }

    for(unsigned int j = i+1; (j < strlen(buf))&&(buf[j]!= ':'); j++){
    	min+=buf[j];
    }

    hora += min;

    string resultado(hora);

    return resultado;
}
Пример #4
0
void Servicios::agregarAlArbol(string nombreArbol, string clavePasada, unsigned int idNueva)
{
	string pathArbol = Parametros().getParametro(CARPETA_DATOS);
	pathArbol += nombreArbol;
	ArbolBMasAlfabetico *arbol  = new ArbolBMasAlfabetico(pathArbol, TAMANIO_BLOQUE_BMAS);

	resultadoOperacion resultado(OK);

	Registro* registro= arbol->buscarRegistro(clavePasada, &resultado);
	unsigned int offset;

	if (registro && resultado.getDescripcion() == "ENCONTRADO")
	{
		//lista ya existe
		offset = registro->getReferenciai(1);
		ListasIds().agregarIdDeLibro(&offset,idNueva,false);
	}
	else{
		//debo crear la lista nueva
		ListasIds().agregarIdDeLibro(&offset, idNueva,true);
		arbol->insertar(clavePasada,offset);
	}
	delete arbol;

}
Пример #5
0
std::string XmlNodo::getPropiedad(const std::string& nombre) {
	char* propiedad;
	propiedad = (char*) xmlGetProp(nodo, (const xmlChar*) nombre.c_str());
	std::string resultado(propiedad);
	xmlFree(propiedad);// ver este tema de memoria
	return resultado;
}
Пример #6
0
vector<float> Calc::produtoMatrizVetor(vector<vector<float> > matriz, vector<float> vetor){
    vector<float> resultado(4, 0);

    for(int i = 0; i < matriz.size(); i++)
        for(int j = 0; j < vetor.size(); j++)
            resultado[i] = matriz[i][j]*vetor[j] + resultado[i];

    return resultado;
}
Пример #7
0
int main()
{
float x1, x2, y1, y2;
printf("Introduce el X1\n");
scanf("%f", &x1);
printf("Introduce el X2\n");
scanf("%f", &x2);
printf("Introduce el Y1\n");
scanf("%f", &y1);
printf("Introduce el Y2\n");
scanf("%f", &y2);

printf("El resultado es %f\n", resultado(x1,x2,y1,y2));
}
Пример #8
0
Pixel promedio(vector<Pixel> pixels) {
    int r = 0, g = 0, b = 0;
    int cantidad = pixels.size();

    int i = 0;
    while (i < cantidad) {
        r += pixels[i].red();
        g += pixels[i].green();
        b += pixels[i].blue();

        i++;
    }

    Pixel resultado(r / cantidad, g / cantidad, b / cantidad);
    return resultado;
}
Пример #9
0
struct nodoL{
	T dato;
	nodoL * sig;
}

Iterador<Camino> TodosLosCaminos(nodoABB * raiz){
	nadoL<Camino> * caminos = NULL;
	nat cantCaminos = 0;
	EncontrarCaminos(raiz, NULL, 0, caminos, cantCaminos);
	Array<Camino> resultado(cantCaminos);
	nat pos = 0;
	while (camions != NULL){
		resultado[pos] = caminos->dato;
	}
	return resultado.ObtenerIterador();
}
Пример #10
0
Pixel mediana(vector<Pixel> pixels) {
    vector<int> reds, greens, blues;
    int cantidad = pixels.size();

    int i = 0;
    while (i < cantidad) {
        reds.push_back(pixels[i].red());
        greens.push_back(pixels[i].green());
        blues.push_back(pixels[i].blue());

        i++;
    }

    sort(reds);
    sort(greens);
    sort(blues);

    Pixel resultado(reds[cantidad / 2], greens[cantidad / 2], blues[cantidad / 2]);
    return resultado;
}
Пример #11
0
vector<double> indeg(ifstream& ifile, int cant_nodos, int cant_aristas) {
    int sumaTotal = 0;
    vector<double> resultado (cant_nodos, 0); 
    int i = 0;
    int j = 0;
    for (int k = 0; k < cant_aristas; k++) {
        ifile >> i;
        i--;
        ifile >> j;
        j--;
        resultado[j]++;
        sumaTotal++;
    }

    for (int i = 0; i < cant_nodos; i++){
        resultado[i] = resultado[i] / sumaTotal;
    }

    return resultado;
}
Пример #12
0
Файл: BD.cpp Проект: tureba/CBIR
QVector<float> BD::extrairMatrizCoOcorrencia(QImage imagem)
{
	QVector<float> valores1(256 * 256, 0);
	QVector<float> valores2(256 * 256, 0);
	QVector<float> valores3(256 * 256, 0);
	QVector<float> valores4(256 * 256, 0);

	for (int i = 1; i < imagem.width() - 1; i++) {
		for (int j = 1; j < imagem.height() - 1; j++) {
			valores1[qGray(imagem.pixel(i,j)) + qGray(imagem.pixel(i+1,j)) * 256]++;
			valores2[qGray(imagem.pixel(i,j)) + qGray(imagem.pixel(i+1,j+1)) * 256]++;
			valores3[qGray(imagem.pixel(i,j)) + qGray(imagem.pixel(i,j+1)) * 256]++;
			valores4[qGray(imagem.pixel(i,j)) + qGray(imagem.pixel(i-1,j+1)) * 256]++;
		}
	}

	QVector<float> resultado(valores1 + valores2 + valores3 + valores4);
	for (int i = 0; i < resultado.size(); i++)
		resultado[i] /= ((imagem.width() - 2) * (imagem.height() - 2));
	return resultado;
}
Пример #13
0
std::string GNC::Entorno::CrearDirectorioTemporal()
{
        wxString dirTmp;
        do {
                std::ostringstream ostr;
                ostr << GetGinkgoTempDir().c_str() << (char)wxFileName::GetPathSeparator() << "_gnktmp_" << rand();
                dirTmp = FROMPATH(ostr.str());
        } while (wxDirExists(dirTmp));

#if defined(_WINDOWS)
        bool success = wxMkDir(dirTmp);
#else
        bool success = wxMkDir(dirTmp.ToUTF8(), 0770);
#endif

        std::string resultado(TOPATH(dirTmp));
        if (!success) {
                LOG_ERROR("Core", "Error creating temporary directory '"<<resultado << "'");
        }
        return resultado;
}
Пример #14
0
main(){

	int i,res;
   randomize();
	for (i=1; i<16; i++){

		res = resultado();

		if (res == 1){
   		printf("\nEl resultado del partido %d es: 1",i);
   	}
   	if (res == 0){
    		printf("\nEl resultado del partido %d es: X",i);
   	}
   	if (res == 2){
    		printf("\nEl resultado del partido %d es: 2",i);
   	}

	}
	getch();

}
Пример #15
0
void Servicios::sacarDelArbol(string nombreArbol, string clave, unsigned int idLibro)
{

	string pathArbol = Parametros().getParametro(CARPETA_DATOS);
	pathArbol += nombreArbol;
	ArbolBMasAlfabetico *arbol  = new ArbolBMasAlfabetico(pathArbol, TAMANIO_BLOQUE_BMAS);
	resultadoOperacion resultado(OK) ;

	Registro* registro= arbol->buscarRegistro(clave, &resultado);
	unsigned int offset;


	if (registro && resultado.getDescripcion() == "ENCONTRADO")
	{
		offset = registro->getReferenciai(1);

		if (ListasIds().sacarIdDelLibro(offset,idLibro) == LISTA_VACIA){
			resultadoOperacion resultado = arbol->eliminar(clave);
		}
	}

	delete arbol;

}
QList<QString> busqueda::on_pushButton_clicked()
{

    ui->lb_info->setVisible(true);
    //este es el boton de busqueda

    numeroDeCampo=ui->cb_busqueda->currentIndex();
    QString query=ui->lb_busqueda->text();

    QFile indice("./indice.txt");
    QFile resultado("./resultadosIndices.txt");
    QString buscado=ui->cb_busqueda->currentText();
    QList <QString>lista=buscado.split('(');
    if(lista.at(1)=="Integer)"||lista.at(1)=="Double)"){//busqueda de un numero
        QString numero=ui->sb_busqueda->text();

        indice.open(QIODevice::ReadOnly);
        resultado.open(QIODevice::WriteOnly);

        //*************inicio busqueda en archivo***********//
        QTextStream in(&indice);

        while(!in.atEnd()){
            QString line=in.readLine();
            QList<QString> lista=line.split('\t');

            if(lista.at(numeroDeCampo)==numero){
                resultadoFinal.append(line+'\n');
            }

        }//fin recorrido de archivo

        //*************fin busqueda en archivo***********//

        indice.close();
        resultado.close();

    }else{//busqueda de un string

        QString query=ui->lb_busqueda->text();

        indice.open(QIODevice::ReadOnly);
        resultado.open(QIODevice::WriteOnly|QIODevice::Append);


        //*************inicio busqueda en archivo***********//
        QTextStream in(&indice);

        while(!in.atEnd()){
            QString line=in.readLine();
            QList<QString> lista=line.split('\t');

            if(lista.at(numeroDeCampo)==query){
                resultadoFinal.append(line+'\n');
            }

        }//fin recorrido de archivo

        //*************fin busqueda en archivo***********//

    }//fin if else

    indice.close();
    resultado.close();

    return resultadoFinal;

}
Пример #17
0
QList<QString> busqueda::on_pushButton_clicked()
{

    ui->lb_info->setVisible(true);
    //este es el boton de busqueda

    numeroDeCampo=ui->cb_busqueda->currentIndex();
    QString query=ui->lb_busqueda->text();

    cout<<"11"<<endl;

    QFile indice("./indice.txt");
    QFile resultado("./resultadosIndices.txt");

    cout<<"22"<<endl;

    QString buscado=ui->cb_busqueda->currentText();
    QList <QString>lista=buscado.split('(');

    cout<<"IMPRESION DE LISTA: "<<endl;
    for(int i=0;i<lista.size();i++){
        cout<<lista.at(i).toStdString()+',';
    }

    cout<<endl;

    if(lista.at(1)=="Integer)"||lista.at(1)=="Double)"){//busqueda de un numero
        QString numero=ui->sb_busqueda->text();

        cout<<"33"<<endl;

        indice.open(QIODevice::ReadOnly);
        resultado.open(QIODevice::WriteOnly);

        //*************inicio busqueda en archivo***********//
        QTextStream in(&indice);

        while(!in.atEnd()){
            QString line=in.readLine();
            QList<QString> lista=line.split('\t');

            cout<<"IMPRESION DE LINEA DEL ARCHIVO DE INDICE: "<<endl;
            for(int i=0;i<lista.size();i++){
                cout<<lista.at(i).toStdString()+',';
            }
            cout<<endl;

            cout<<"44"<<endl;

            if(lista.at(numeroDeCampo)==numero){
                resultadoFinal.append(line+'\n');
                cout<<"se encontro el resultado"<<endl;
            }

        }//fin recorrido de archivo

        //*************fin busqueda en archivo***********//

        indice.close();
        resultado.close();

    }else{//busqueda de un string

        QString query=ui->lb_busqueda->text();

        indice.open(QIODevice::ReadOnly);
        resultado.open(QIODevice::WriteOnly|QIODevice::Append);

        cout<<"55"<<endl;

        //*************inicio busqueda en archivo***********//
        QTextStream in(&indice);

        while(!in.atEnd()){
            QString line=in.readLine();
            QList<QString> lista=line.split('\t');

            cout<<"66"<<endl;

            if(lista.at(numeroDeCampo)==query){
                resultadoFinal.append(line+'\n');
            }

        }//fin recorrido de archivo

        //*************fin busqueda en archivo***********//

    }//fin if else

    indice.close();
    resultado.close();

    return resultadoFinal;

}
Пример #18
0
int Servicios::quitarArchivo(string unId)
{
	unsigned int id = atoi(unId.c_str());
	unsigned int offset = 0;

	cout<<"Eliminando libro "<<id<<"..."<<endl;

	//recuperar el offset del primario

	string pathArbolPrimario = Parametros().getParametro(CARPETA_DATOS);
	pathArbolPrimario += NOMBRE_BMAS_PRIMARIO;

	if (pathArbolPrimario == "") return ERROR_RUTA_BMAS_PRIMARIO;

	ArbolBMasNumerico *arbolP = new ArbolBMasNumerico(pathArbolPrimario, TAMANIO_BLOQUE_BMAS_NUMERICO);

	resultadoOperacion resultado(OK);

	Registro* registro = arbolP->buscarRegistroNumerico(id, &resultado);

	//TODO ver si esta recuperando bien el offset
	if (registro && resultado.getDescripcion() == "ENCONTRADO")
		offset = registro->getReferencias()->front();
	else
		return ERROR_LIBRO_INEXISTENTE;


//quitar de el archivo de registros variables

	string arcLibros = Parametros().getParametro(ARCHIVO_LIBROS);
	ArchivoLibros *archivo = new ArchivoLibros(arcLibros);
	Libro *libro = archivo->recuperarLibro(offset);
//	cout <<"Autor: "<< libro->getAutor() <<endl;
//	cout <<"Editorial: "<< libro->getEditorial() <<endl;
//	cout <<"Titulo: "<< libro->getTitulo() <<endl;
//	cout <<"Id: "<< libro->getId() <<endl;
//	cout <<"Cant.palabras: " << libro->getCantPalabras() << endl;
//	cout << "Presione ENTER para continuar...." << endl;
//	cin.get();

//	cout << "SACO EL LIBRO DEL ARCHIVO DE REGISTROS VARIABLES" << endl;
	archivo->suprimirLibro(offset);


//quitar del primario

	//cout << "QUITO DEL PRIMARIO EL ID" << endl;

	arbolP->eliminarNumerico(libro->getId());

	delete arbolP;

//quitar de los indices

	//cout << "SACO DE LOS INDICES" << endl;

	//cout << "SACO DE AUTORES" << endl;
	sacarDelArbol(NOMBRE_BMAS_AUTORES,libro->getAutor(),libro->getId());
	//cout << "Presione ENTER para continuar...." << endl;
	//cin.get();

	//cout << "SACO DE EDITORIALES" << endl;
	sacarDelArbol(NOMBRE_BMAS_EDITORIALES,libro->getEditorial(),libro->getId());
	///cout << "Presione ENTER para continuar...." << endl;
	//cin.get();

	//cout << "SACO DE TITULOS" << endl;
	sacarDelHash(NOMBRE_HASH_TITULOS,libro->getTitulo(),libro->getId());
	//cout << "Presione ENTER para continuar...." << endl;
	//cin.get();

	//cout << "SACO PALABRAS" << endl;
	//cout << "Procesando la quita del indice..." << endl;
	set<string> *palabras = libro->getListaPalabras();

	for (set<string>::iterator it = palabras->begin(); it != palabras->end(); it++)
	{
		sacarDelHash(NOMBRE_HASH_PALABRAS, *it ,libro->getId());
	}


//quitar de la lista de libros sin procesar
	//cout << "SACO DE LOS INDICES SIN PROCESAR" <<endl;
	SinIndice *listas  = SinIndice().getInstancia();
	listas->sacarLibroDeTodasLasListas(id);

	delete archivo;

	/*******************AGREGADO ENTREGA II*************************/


	string pathArbolPalabras = Parametros().getParametro(CARPETA_DATOS);
	pathArbolPalabras += NOMBRE_BMAS_PALABRAS;
	pathArbolPalabras += "_" + Util().UIntToString(id);

	resultadoOperacion resultadoOp(OK);


	ArbolBMasAlfabetico *arbolPal = new ArbolBMasAlfabetico(pathArbolPalabras, TAMANIO_BLOQUE_BMAS_PALABRAS);



	//recorrer el arbol de palabras
	Registro *reg = arbolPal->buscarRegistro("a",&resultadoOp);
	unsigned int lista;

	while (reg != NULL)
	{
		lista = reg->getReferenciai(1);
		ListasIds().eliminarLista(lista);
		reg = arbolPal->siguiente();
	}

	arbolPal->~ArbolBMasAlfabetico();

	Util().eliminarArchivo(pathArbolPalabras);

	/*******************AGREGADO ENTREGA II*************************/


	return 0;


}
Пример #19
0
int main()
{
    CImg<float> img,img_hsi,img_hsi_p,maskRGB,maskHSI,resultado,resultado2,resultado0,resultado1,imgOrig,kernel,kernel2,eqGlobal,diferencia,hist;
    CImgDisplay displayImagen, displayMascaraRGB, displayMascaraHSI;
    float radioHSI=50, radioRGB=20;
    unsigned mx, my;

    imgOrig.load("../../../../images/Deforestacion.png");
    //img es la imagen auxiliar a procesar (RGB)
    img=imgOrig;
    //Recorte de la zona de interes
    img.crop(152,275,729,705); //recorte estilo bestia
    //Area total de la zona de interes
    float areaTotal= (img.width()*img.height())*areaPixel;
    //imagen auxiliar HSI
    img_hsi = img.get_RGBtoHSI();

    //Muestra el histograma del canal I de la HSI
    hist = img_hsi.get_channel(2).get_normalize(0,255).get_histogram(256,0,255);
    hist.display_graph();

    //Procesamiento final donde se normaliza se filtra multiples veces y luego se aplica umbralado
    //Todos sobre el canal de intensidad

    //Primero normalizo
    resultado = img_hsi.get_channel(2).normalize(0,255);
    resultado.display("Canal I Normalizado");

    //Ecualizo el resultado
    resultado = resultado.get_equalize(256);
    resultado.display("Ecualizando");

    //Separo los grises medios claros de los grises medios oscuros
    resultado = transformacion(resultado,(generar_lut_logb(float(1),0)));
    resultado.display("Aplicando una lut");

    //Aplicacion de mascaras de promediado

    //Mascara para detalles grandes
    int pasadas = 10;
    for (int i = 0 ; i <=pasadas ; i++){
        resultado = resultado.get_convolve(mask(3));
    }
    //Mascara para detalles chico
    pasadas = 1;
    for (int i = 0 ; i <=pasadas ; i++){
        resultado = resultado.get_convolve(mask(9));
    }

    resultado.display("Canal I Fitrado");
    hist = resultado.get_histogram(256,0,255);
    hist.display_graph("Histograma Canal I Filtrado");

    //Aplico el umbralado
    resultado = resultado.get_threshold(170);

    //Muestro la mascara obtenida
    resultado.display("Mascara Final");

    //poner rojo en la zona
    float areaLimpia=0; //acumulo la cantidad de pixel que tiene el area desmontada marcada de rojo
    //Trabajo sobre una auxiliar
    img_hsi_p = img_hsi;
    cimg_forXYZ(img_hsi,i,j,k){
        if(resultado(i,j)==1){
        img_hsi_p(i,j,k,0)=0.0;
        img_hsi_p(i,j,k,1)=1.0;
        areaLimpia+=areaPixel;
        }
    }

    //Muestra los resultados de los calculas de Area (en hectareas)
    cout<<"Area Total "<< areaTotal*0.0001<<" hectareas - Area Limpia "<<areaLimpia*0.0001<<" hectareas " <<endl;

    //Carga los canales en una lista y muestra el resultado final
    CImgList<float> lista(img,img_hsi.get_channel(0),img_hsi.get_channel(1),img_hsi.get_channel(2),img_hsi_p.get_HSItoRGB());
    lista.display("Original - H - S - I - Imagen Final");

    return 0;
}