예제 #1
0
파일: prueba.c 프로젝트: iamedu/armdev
void add(lista **principal, char c) {
	lista *tmp;
	tmp = *principal;
	if(*principal == NULL) {
		*principal = nodo(c);
	} else {
		while(tmp->siguiente != NULL) {
			tmp=tmp->siguiente;
		}
		tmp->siguiente = nodo(c);
	}
}
예제 #2
0
// GUARDAR
XmlNodo Jerarquia::guardarXmlCOMP() {
	XmlNodo nodo("jerarquia");

	this->agregarPropiedadesXmlCOMP(&nodo);
	this->agregarCodigoEntidadGeneralXmlCOMP(&nodo);
	this->agregarCodigosEntidadEspecializadasXmlCOMP(&nodo);

	return nodo;
}
예제 #3
0
파일: solucion.c 프로젝트: sergiokas/utn
// Intenta moverse en una direccion
int intentar(paso_t ** S, char D) {
	int c;

	c = camino(*S, D);
	// Encontramos la salida
	if(c == SALIDA) {
		printf("Encontramos la salida!\n");
	}
	// El camino esta cerrado
	else if (c == CERRADO) {
		cerrar(*S, D);	// Si no se puede seguir, cerramos
		printf("Intento hacia %c, camino cerrado.\n", D);
	}
	// Se puede continuar
	else {
		cerrar(*S, D);
		avanzar(S, nodo());
		cerrar(*S, opuesto(D));
		printf("Avanzando hacia %c...\n", D);
	}

	return c;
}
예제 #4
0
파일: solucion.c 프로젝트: sergiokas/utn
// Soluciona la mazmorra
int solucion(void) {
	int i;
	paso_t * L = NULL; 
	paso_t * p = NULL;

	// Agrego paso inicial, ingresando al laberinto hacia el norte
	p = nodo();
	cerrar(p, 'S');
	avanzar(&L,p);

	// Ciclo hasta salir del laberinto
	do {
		usleep(PAUSA);
		if(L==NULL) {
			printf("Volvimos a la entrada, el laberinto no tiene salida!\n");
			exit(1);
		}
		if(L->N == ABIERTO) {
			i=intentar(&L,'N');
		}
		else if (L->S == ABIERTO) {
			i=intentar(&L,'S');	
		}
		else if (L->O == ABIERTO) {
			i=intentar(&L, 'O');
		}
		else if (L->E == ABIERTO) {
			i=intentar(&L, 'E');
		}
		else {
			printf("No se puede avanzar, retrocediendo un paso...\n");
			retroceder(&L);
		}
	} while (i!=SALIDA);
	return 0;
}
예제 #5
0
int btree::dividir(int pos,int tipo){
    int pa=pos;
 if(tipo==1){
    indice temp = nodos[pos].removemitad();
    nodo tempiz;
    nodo tempder;
    for(int i=0;i<31;i++){
        if(i<30){
            tempiz.setIndice(nodos[pos].getData()[i],i);
            tempiz.setSon(nodos[pos].getSons()[i],i);
        }else{
            tempiz.setSon(nodos[pos].getSons()[i],i);
        }
    }
    int j =30;
    for(int i=0;i<32;i++){
        if(i<31){
            tempder.setIndice(nodos[pos].getData()[j],i);
            tempder.setSon(nodos[pos].getSons()[j],i);
        }else{
            tempder.setSon(nodos[pos].getSons()[j],i);
        }
        j++;
    }
    nodos.removeAt(pos);
    nodos.insert(pos,tempiz);
    nodos.append(tempder);
    int nuevaconeccion = nodos.count()-1;
    int pospadre=-1;
    for(int i=0;i<nodos.count();i++){
        for(int j=0;j<nodos[i].getSons().count();j++){
            if(nodos[i].getSons()[j]==pos){
                pospadre=i;
            }
        }
    }

    if(pospadre==-1){
        nodos.append(nodo());
        nodos[nodos.count()-1].setIndice(temp,0);
        nodos[nodos.count()-1].setSon(pos,0);
        nodos[nodos.count()-1].setSon(nuevaconeccion,1);
        pa=nodos.count()-1;
    }else{

        if(nodos[pospadre].getData()[62].getLlave()==""){
            int lugar = nodos[pospadre].lugardisponible(temp,1);
            nodos[pospadre].insertindice(temp,lugar);
            nodos[pospadre].insertson(nuevaconeccion,lugar+1);
            pa=pospadre;

        }

       else{
            int lugarhijo = nodos[pospadre].inserttempdata(temp,1);
            nodos[pospadre].inserttempson(lugarhijo,nuevaconeccion);
            dividir(pospadre,1);
        }

    }
 }else{
     indice temp = nodos[pos].removemitad();
     nodo tempiz;
     nodo tempder;
     for(int i=0;i<31;i++){
         if(i<30){
             tempiz.setIndice(nodos[pos].getData()[i],i);
             tempiz.setSon(nodos[pos].getSons()[i],i);
         }else{
             tempiz.setSon(nodos[pos].getSons()[i],i);
         }
     }
     int j =30;
     for(int i=0;i<32;i++){
         if(i<31){
             tempder.setIndice(nodos[pos].getData()[j],i);
             tempder.setSon(nodos[pos].getSons()[j],i);
         }else{
             tempder.setSon(nodos[pos].getSons()[j],i);
         }
         j++;
     }
     nodos.removeAt(pos);
     nodos.insert(pos,tempiz);
     nodos.append(tempder);
     int nuevaconeccion = nodos.count()-1;
     int pospadre=-1;
     for(int i=0;i<nodos.count();i++){
         for(int j=0;j<nodos[i].getSons().count();j++){
             if(nodos[i].getSons()[j]==pos){
                 pospadre=i;
             }
         }
     }

     if(pospadre==-1){
         nodos.append(nodo());
         nodos[nodos.count()-1].setIndice(temp,0);
         nodos[nodos.count()-1].setSon(pos,0);
         nodos[nodos.count()-1].setSon(nuevaconeccion,1);
         pa=nodos.count()-1;
     }else{

         if(nodos[pospadre].getData()[62].getLlave()==""){
             int lugar = nodos[pospadre].lugardisponible(temp,2);
             nodos[pospadre].insertindice(temp,lugar);
             nodos[pospadre].insertson(nuevaconeccion,lugar+1);
             pa=pospadre;

         }

        else{
             int lugarhijo = nodos[pospadre].inserttempdata(temp,2);
             nodos[pospadre].inserttempson(lugarhijo,nuevaconeccion);
             dividir(pospadre,2);
         }

     }
 }
    return pa;

}
예제 #6
0
int btree::insertIndice(indice in,int pos,int tipo){
    int pa = pos;
if(tipo==1){
  if(nodos.count()>0){
    if(!(nodos[pos].getSons()[0]==-1)){
        for(int i=0;i<nodos[pos].getData().count();i++){
            if(nodos[pos].getData()[i].getLlave()!=""){
                if(nodos[pos].getHijoIzquiero(i)!=-1 && in.getLlave()<nodos[pos].getData()[i].getLlave()){
                    insertIndice(in,nodos[pos].getHijoIzquiero(i),1);
                 }else if(i==nodos[pos].getData().count()-1){
                    insertIndice(in,nodos[pos].getHijoDerecho(i),1);
                }
            }else{
                insertIndice(in,nodos[pos].getHijoIzquiero(i),1);
                break;
            }

        }


    }else if(nodos[pos].getData()[61].getLlave()==""){
        nodos[pos].insertindice(in,nodos[pos].lugardisponible(in,1));
    }else{

        int lugarhijo = nodos[pos].inserttempdata(in,1);
        nodos[pos].inserttempson(lugarhijo,-1);
        pa = dividir(pos,1);

    }
  }else{
    nodos.append(nodo());
    nodos[pos].setIndice(in,0);
  }
 }else{
    if(nodos.count()>0){
      if(!(nodos[pos].getSons()[0]==-1)){
          for(int i=0;i<nodos[pos].getData().count();i++){
              if(nodos[pos].getData()[i].getLlave()!=""){
                  if(nodos[pos].getHijoIzquiero(i)!=-1 && in.getLlave().toInt()<nodos[pos].getData()[i].getLlave().toInt()){
                      insertIndice(in,nodos[pos].getHijoIzquiero(i),2);
                   }else if(i==nodos[pos].getData().count()-1){
                      insertIndice(in,nodos[pos].getHijoDerecho(i),2);
                  }
              }else{
                  insertIndice(in,nodos[pos].getHijoIzquiero(i),2);
                  break;
              }

          }


      }else if(nodos[pos].getData()[61].getLlave()==""){
          nodos[pos].insertindice(in,nodos[pos].lugardisponible(in,2));
      }else{

          int lugarhijo = nodos[pos].inserttempdata(in,2);
          nodos[pos].inserttempson(lugarhijo,-1);
          pa = dividir(pos,2);

      }
    }else{
      nodos.append(nodo());
      nodos[pos].setIndice(in,0);
    }
 }
  return pa;
}
예제 #7
0
void build_digraph(Digrafo & g)
{
  g.insert_arc(nodo(g, "A"), nodo(g, "B"));
  g.insert_arc(nodo(g, "A"), nodo(g, "I"));
  g.insert_arc(nodo(g, "A"), nodo(g, "F"));
  g.insert_arc(nodo(g, "B"), nodo(g, "F"));
  g.insert_arc(nodo(g, "C"), nodo(g, "F"));
  g.insert_arc(nodo(g, "C"), nodo(g, "G"));
  g.insert_arc(nodo(g, "D"), nodo(g, "H"));
  g.insert_arc(nodo(g, "F"), nodo(g, "I"));
  g.insert_arc(nodo(g, "F"), nodo(g, "J"));
  g.insert_arc(nodo(g, "G"), nodo(g, "J"));
  g.insert_arc(nodo(g, "H"), nodo(g, "J"));
  g.insert_arc(nodo(g, "H"), nodo(g, "K"));
  g.insert_arc(nodo(g, "H"), nodo(g, "L"));
  g.insert_arc(nodo(g, "I"), nodo(g, "P"));
  g.insert_arc(nodo(g, "J"), nodo(g, "M"));
  g.insert_arc(nodo(g, "J"), nodo(g, "N"));
  g.insert_arc(nodo(g, "K"), nodo(g, "N"));
  g.insert_arc(nodo(g, "K"), nodo(g, "O"));
  g.insert_arc(nodo(g, "L"), nodo(g, "O"));
  g.insert_arc(nodo(g, "L"), nodo(g, "S"));
  g.insert_arc(nodo(g, "M"), nodo(g, "P"));
  g.insert_arc(nodo(g, "M"), nodo(g, "Q"));
  g.insert_arc(nodo(g, "N"), nodo(g, "R"));
  g.insert_arc(nodo(g, "O"), nodo(g, "R"));
  g.insert_arc(nodo(g, "O"), nodo(g, "S"));
}