Exemplo n.º 1
0
Driver::Registro RNRS(const modulos::Registro& r){                      // Registro Nuestro a Registro Suyo
  const Dicc<String,modulos::Dato> dc = r.DameDic();
  typename Dicc<String,modulos::Dato>::const_Iterador it = dc.CrearIt();
  Driver::Registro res;
  while(it.HaySiguiente()){
    Driver::Dato d = DNDS( it.SiguienteSignificado() );
    res.Definir( it.SiguienteClave(), d);
    it.Avanzar();
  }
  return res;
}
Exemplo n.º 2
0
campusSeguro::campusSeguro(campus c, Dicc<Agente,Posicion> d)
{
    campus camp = c;
    DiccPalabra<Posicion> estyHip;// creo un DiccTrie vacio.
    campusSeguro::DatosPos tup;
    tup.id = 4;
    tup.tag = "libre";
    tup.placa = 0;
    Nat cantidadFilas=c.Filas();
    Nat cantidadColumnas=c.Columnas();
    diccMatriz<campusSeguro::DatosPos> datosMatriz(cantidadFilas,cantidadColumnas,tup);
    diccHash<Agente,campusSeguro::Datos> dicc(d.CantClaves()); // creo dicchash de tamaño d.Claves().Cardinal()
    diccHash<Agente,campusSeguro::Datos>::Iterador itHashVacio = dicc.CrearIt();
    tup.datosAgente = itHashVacio;
    ConjsEqu<Agente>  equSan; // creo un EqusEqu vacio y lo guardo en la variable equSan.
    campusSeguro::DatosSanciones KSan;
    Nat i = 0;
    Nat j = 0;
      while( i < c.Filas() )
      {
            while( j< c.Columnas())
            {
              //Posicion pos(i,j); // creo una posicion (i,j).
                Posicion p;
                p.x = i;
                p.y = j;
                campusSeguro::DatosPos data;  // ESTA VARIABLE NO SE SI VA DENTRO DEL SCOPE DEL WHILE, xq SE BORRA.
                if( _campus.Posocupada(p))
                {
                    data.id = 0;
                    data.tag = "ocupada";
                    data.placa = 0;
                    data.datosAgente = itHashVacio;
                    datosMatriz.Definir(p, data);
                }
                j++;
            }// endwhile
            i++;
      }// endwhile

    Dicc<Agente,Posicion>::Iterador it;
    it = d.CrearIt();

  while( it.HaySiguiente() )
  {
        campusSeguro::DatosPos data;  // ESTA VARIABLE NO SE SI VA DENTRO DEL SCOPE DEL WHILE, xq SE BORRA.
        campusSeguro::Datos dataH;
        Posicion pos;
        Agente plak;
        ConjsEqu<Agente>::Iterador itEqu;

        plak = it.SiguienteClave();
        pos = it.SiguienteSignificado();
        itEqu = equSan.relacionar(0, plak);
        dataH.pos = pos;
        dataH.Sanciones = 0;
        dataH.hippiesAtrapados = 0;
        dataH.claseConMismasSanciones = itEqu;
        data.id = 3;
        data.tag = "agente";
        data.placa = plak;
        data.datosAgente = dicc.Definir(plak, dataH); // definir retorna un iterador de Dicc.
        datosMatriz.Definir(pos, data);
        it.Avanzar();
  }
    Arreglo<TuplaAgYSan> nuevoArreglo(1); // creo array de 1 posicion
    KSan.arreglo = nuevoArreglo; // meto el arreglo en el campo arreglo de KSan.
    KSan.buffer = false;
    KSan.itMenosSanciones = equSan.CrearIt();

     // el masvigilante al comienzo de la instancia campusSeguro es cualquier vigilante:
    campusSeguro::DatosAgentesyAtrapados elMas;
    Dicc<Agente,Posicion>::Iterador itAgts = d.CrearIt();
    elMas.agente = itAgts.SiguienteClave();// el primer agente que encuentre.
    elMas.cantAtrapados = 0;

     // incio la instancia:
    _campus = camp;
    _estudiantes = estyHip;
    _hippies = estyHip;
    Conj<Agente> conjuntoDeAgentes; // conjunto vacio que almacenará agentes
    Dicc<Agente,Posicion>::Iterador itDiccAgentes = d.CrearIt();

    while(itDiccAgentes.HaySiguiente()) // voy llenando el conjunto con los agentes del diccionario.
    {
        conjuntoDeAgentes.AgregarRapido(itDiccAgentes.SiguienteClave());
        itDiccAgentes.Avanzar();
    }

    _agentes = conjuntoDeAgentes;
    datosAgentes = dicc;
    grilla = datosMatriz;
    _masVigilante = elMas;
    equivalenciaSanciones = equSan;
    KSanciones = KSan;
    Dicc<Agente,Posicion>::Iterador it2;
    it2 = d.CrearIt();

} // fin funcion constructora (rastrillaje).