Parser::Parser() { try{ Trees=YAML::LoadFile(FILE_YAML); } catch (YAML::ParserException& e){ LOG("NO PUEDE ABRIRSE EL ARCHIVO " FILE_YAML ", SE CARGARÁ EL ARCHIVO DE CONFIGURACIÓN POR DEFECTO"); escribirLog("NO PUEDE ABRIRSE EL ARCHIVO " FILE_YAML ", SE CARGARÁ EL ARCHIVO DE CONFIGURACIÓN POR DEFECTO"); try{ Trees=YAML::LoadFile(FILE_YAML_DEFAULT); } catch (YAML::BadFile& e){ LOG("NO PUDO ABRIRSE EL ARCHIVO " FILE_YAML_DEFAULT " EL PROGRAMA SE INTERRUMPIRÁ"); escribirLog("NO PUDO ABRIRSE EL ARCHIVO " FILE_YAML_DEFAULT " EL PROGRAMA SE INTERRUMPIRÁ"); exit (1); //acá debería hacer un exit lindo } } catch (YAML::BadFile& e){ LOG("NO PUEDE ABRIRSE EL ARCHIVO " FILE_YAML ", SE CARGARÁ EL ARCHIVO DE CONFIGURACIÓN POR DEFECTO"); escribirLog("NO PUEDE ABRIRSE EL ARCHIVO " FILE_YAML ", SE CARGARÁ EL ARCHIVO DE CONFIGURACIÓN POR DEFECTO"); try{ Trees=YAML::LoadFile(FILE_YAML_DEFAULT); } catch (YAML::BadFile& e){ LOG("NO PUDO ABRIRSE EL ARCHIVO " FILE_YAML_DEFAULT " EL PROGRAMA SE INTERRUMPIRÁ"); escribirLog("NO PUDO ABRIRSE EL ARCHIVO " FILE_YAML_DEFAULT " EL PROGRAMA SE INTERRUMPIRÁ"); exit (1); //acá debería hacer un exit lindo } } Inicializar(Trees); }
void RX::DefCantLecturas(int cantLecturas) { // Define la cantidad de lecturas a promediar. Por defecto 10. if (cantLecturas > 0) { _cantLecturas = cantLecturas; unsigned long int _lectCh[_cantLecturas]; Inicializar(); } }
void RX::DefLimitesRX(int minCh, int maxCh) { // Define los limites minimos y maximos para el canal. if (minCh < maxCh) { _minCh = minCh; _maxCh = maxCh; Inicializar(); } }
void RX::DefPin(int pin) { // Define el pin fisico donde esta conectado al arduino if (pin > 0) { pinMode(pin, INPUT); _pin = pin; Inicializar(); } }
int main() // Funcao principal { Processo *Pilha = (Processo *) malloc(sizeof(Processo)); if(Pilha== NULL){ printf("Memoria Indisponivel.\n"); exit(1); } else{ Inicializar(Pilha); Menu(Pilha); free(Pilha); return 0; } }
int main(int argc, char const *argv[]) { No *arvore, *b; arvore = Inicializar(); Inserir (50, &arvore); Inserir (40, &arvore); Inserir (60, &arvore); Inserir (30, &arvore); Inserir (45, &arvore); Inserir (35, &arvore); //arvore = Inserir (5, arvore); PreOrdem (arvore); printf("\n"); Remover (40, &arvore); /*b = BuscaBinaria (11, arvore); if (b != NULL) printf ("\n\nValor 11 encontrado\n"); b = BuscaBinaria (12, arvore); if (b == NULL) printf ("Valor 12 nao encontrado\n"); printf("Altura = %d \n",Altura(arvore)); printf("nos = %d \n",QuantidadeNos(arvore)); printf("folhas = %d \n",QuantidadeFolhas(arvore));*/ //arvore = Inserir (4, arvore); //arvore = Inserir (8, arvore); //arvore = Inserir (15, arvore); //arvore = Inserir (12, arvore); PreOrdem (arvore); /*b = BuscaBinaria (12, arvore); if (b != NULL) printf ("Valor 12 encontrado\n"); */ Liberar(arvore); return 0; }
int main(){ char labelConj; // rotulo do conjunto empregado nas operacoes int erro; // flag de erro na criacao dos conjuntos int Opcao; // operacao escolhida pelo usuario Conjunto *A, *B, *C; elem valor, min, max; // conjunto A A = CriaConjVazio(&erro); if (erro){ printf("Erro de alocacao!\n"); exit(1); } // conjunto B B = CriaConjVazio(&erro); if (erro){ printf("Erro de alocacao!\n"); exit(1); } // conjunto C onde serao armazenados os resultados das operacoes C = CriaConjVazio(&erro); if (erro){ printf("Erro de alocacao!\n"); exit(1); } //Enquanto Opcao for diferente de SAIR. do { //Pergunta a Opcao que o usuario deseja realizar. scanf("%d", &Opcao); //Verifica qual Opcao foi escolhida. switch (Opcao) { // Opcao 1 case INSERCAO: scanf("%d \n%c", &valor, &labelConj); if (labelConj == 'A') //insere em A if (Insere(valor, A) == FALSO) //se der problema printf(FRASE_ELEM_INVALIDO); //imprime frase else { printf("A = "); Imprimir(A); } else if (labelConj == 'B') // insere em B if (Insere(valor, B) == FALSO) printf(FRASE_ELEM_INVALIDO); else { printf("B = "); Imprimir(B); } else printf(FRASE_ERRO); break; // Opcao 2 case REMOCAO: scanf("%d \n%c", &valor, &labelConj); if (labelConj == 'A') // remove de A if (Remove(valor, A) == FALSO) //se der problema printf(FRASE_ELEM_NAOENCONTRADO); //imprime frase else { printf("A = "); if (TestaVazio(A)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(A); } } else if (labelConj == 'B') // remove de B if (Remove(valor, B) == FALSO) printf(FRASE_ELEM_NAOENCONTRADO); else { printf("B = "); if (TestaVazio(B)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(B); } } else printf(FRASE_ERRO); break; // Opcao 3 case MEMBRO: scanf("%d \n%c", &valor, &labelConj); if (labelConj == 'A') // procura em A if (Membro(valor, A) == FALSO) //se der problema printf(FRASE_FALSO); //imprime frase else printf(FRASE_VERDADEIRO); //imprime frase else if (labelConj == 'B') // procura em B if (Membro(valor, B) == FALSO) printf(FRASE_FALSO); else printf(FRASE_VERDADEIRO); else printf(FRASE_ERRO); break; // Opcao 4 case TAMANHO: scanf("\n%c", &labelConj); if (labelConj == 'A') // verifica A printf("%d\n", Tamanho(A)); else if (labelConj == 'B') // verifica B printf("%d\n", Tamanho(B)); else printf(FRASE_ERRO); break; // Opcao 5 case IMPRESSAO: printf("A = "); if (TestaVazio(A)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(A); } printf("B = "); if (TestaVazio(B)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(B); } break; // Opcao 6 case MINIMO: scanf("\n%c", &labelConj); if (labelConj == 'A') { // verifica A min = Min(A); if (min == TAM) // se conjunto vazio printf(FRASE_CONJ_VAZIO); // imprime frase else printf("%d\n", min); //imprime frase } else if (labelConj == 'B') { // verifica B min = Min(B); if (min == TAM) // se conjunto vazio printf(FRASE_CONJ_VAZIO); // imprime frase else printf("%d\n", min); //imprime frase } else printf(FRASE_ERRO); break; // Opcao 7 case MAXIMO: scanf("\n%c", &labelConj); if (labelConj == 'A') { // verifica A max = Max(A); if (max == TAM) // se conjunto vazio printf(FRASE_CONJ_VAZIO); // imprime frase else printf("%d\n", max); //imprime frase } else if (labelConj == 'B') { // verifica B max = Max(B); if (max == TAM) // se conjunto vazio printf(FRASE_CONJ_VAZIO); // imprime frase else printf("%d\n", max); //imprime frase } else printf(FRASE_ERRO); break; // Opcao 8 case UNIAO: Inicializar(C); Uniao(A, B, C); if (TestaVazio(C)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(C); } break; // Opcao 9 case INTERSECCAO: Inicializar(C); Interseccao(A, B, C); if (TestaVazio(C)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(C); } break; // Opcao 10 case DIFERENCA: Inicializar(C); Diferenca(A, B, C); if (TestaVazio(C)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(C); } break; // Opcao 11 case IGUAL: if (Igual(A, B) == FALSO) printf(FRASE_FALSO); else printf(FRASE_VERDADEIRO); break; // Opcao 12 case COPIA: Copia(A, B); printf("A = "); if (TestaVazio(A)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(A); } printf("B = "); if (TestaVazio(B)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(B); } break; // Opcao 13 case SAIR: Libera(A); Libera(B); Libera(C); break; } } while (Opcao != SAIR); return (0); }
void Parser::Inicializar(YAML::Node Arbol){ bool huboErrores = false; try{ setField("pantalla" ,"alto", Arbol,configGame.pantalla.alto); setField("pantalla" ,"ancho", Arbol,configGame.pantalla.ancho); setField("configuracion" ,"vel_personaje", Arbol,configGame.configuracion.vel_personaje); setField("configuracion" ,"margen_scroll", Arbol,configGame.configuracion.margen_scroll); YAML::Node tiposDeObjetos= getField("tipos","", Arbol); map<string,ObjetoGeneral> listaDeObjetos; for (YAML::Node::const_iterator it = tiposDeObjetos.begin();it !=tiposDeObjetos.end(); it++){ ObjetoGeneral unObjeto; setField("nombre",it,unObjeto.nombre); std::list<std::string> listaCampos; try{ listaCampos = (camposObjetos.at(unObjeto.nombre)); } catch(std::out_of_range& e){ LOG ("SE INTENTÓ CARGAR UN OBJETO INVÁLIDO "+unObjeto.nombre); escribirLog("SE INTENTÓ CARGAR UN OBJETO INVÁLIDO "+unObjeto.nombre); break; // no cargo el elemento } if (campoValido("imagen",listaCampos)) setField("imagen",it,unObjeto.imagen); if (campoValido("alto",listaCampos)) setField("alto",it,unObjeto.alto); if (campoValido("ancho",listaCampos)) setField("ancho",it,unObjeto.ancho); if (campoValido("delay",listaCampos)) setField("delay",it,unObjeto.animacion.delay); if (campoValido("fps",listaCampos)) setField("fps",it,unObjeto.animacion.fps); if (campoValido("pixel_ref_x",listaCampos)) setField("pixel_ref_x",it,unObjeto.pixelrefx); if (campoValido("pixel_ref_y",listaCampos)) setField("pixel_ref_y",it,unObjeto.pixelrefx); listaDeObjetos.insert(std::pair<string,ObjetoGeneral>(unObjeto.nombre,unObjeto)); } configGame.objetos=listaDeObjetos; setField("escenario" ,"nombre", Arbol,configGame.escenario.nombre); setField("escenario" ,"size_x", Arbol,configGame.escenario.size_x); setField("escenario" ,"size_y", Arbol,configGame.escenario.size_y); std::vector<Entidad> listaDeEntidades; YAML::Node entidades= getField("escenario","entidades", Arbol); for (YAML::Node::const_iterator it = entidades.begin();it !=entidades.end(); it++){ Entidad unaEntidad; setField("tipo",it,unaEntidad.tipo); try{ (camposObjetos.at(unaEntidad.tipo)); } catch(std::out_of_range& e){ LOG ("SE INTENTÓ CARGAR UN OBJETO INVÁLIDO "+unaEntidad.tipo); escribirLog("SE INTENTÓ CARGAR UN OBJETO INVÁLIDO "+unaEntidad.tipo); break; // no cargo el elemento } setField("x",it,unaEntidad.x); setField("y",it,unaEntidad.y); listaDeEntidades.push_back(unaEntidad); } configGame.escenario.entidades=listaDeEntidades; setField("protagonista" ,"tipo", Arbol,configGame.protagonista.tipo); setField("protagonista" ,"x", Arbol,configGame.protagonista.x); setField("protagonista" ,"y", Arbol,configGame.protagonista.y); } catch (YAML::TypedBadConversion<int>& e){ LOG("ERROR DE CONVERSIÓN"); escribirLog("ERROR DE CONVERSION"); huboErrores = true; } catch (int e){ huboErrores = true; } if (huboErrores){ //LOG("HUBO UN ERROR EN EL YAML USADO, SE CARGARÁ EL ARCHIVO YAML POR DEFECTO"); escribirLog("HUBO UN ERROR EN EL YAML USADO, SE CARGARÁ EL ARCHIVO YAML POR DEFECTO "); Trees=YAML::LoadFile(FILE_YAML_DEFAULT); Inicializar(Trees); } }