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"; }
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; }
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; }
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; }
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; }
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; }
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)); }
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; }
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(); }
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; }
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; }
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; }
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; }
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(); }
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; }
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; }
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; }
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; }