public void insertarCurso(Leccion x)
 {
     for (int y = 0; y < 150; y++)
     {
         int i = Datos.randy.Next(0, 50);
         if (validar_Campo(i, x.getBloque(), x))
         {
             this.setLeccion(i, x.getBloque(), x, false);
             return;
         }
     }
     for (int j = 0; j < Datos.listaAulas.Count; j++)
     {
         for (int y = 0; y < 150; y++)
         {
             int i = Datos.randy.Next(0, 50);
             x.setAula(j);
             if (validar_Campo(i, x.getBloque(), x))
             {
                 this.setLeccion(i, x.getBloque(), x, false);
                 return;
             }
         }
     }
     Console.WriteLine("No se ha podido hallar un espacio disponible para la insercion segura");
     Console.ReadKey();
 }
 public int getEncargado(Leccion x)
 {
     if (x == null)
     {
         return(-1);
     }
     return(this.datocurso[x.getBloque()][x.getCurso()][0]);
 }
 public static Leccion clonar(Leccion origen)
 {
     if (origen == null)
     {
         return(null);
     }
     return(new Leccion(origen.getAula(), origen.getBloque(), origen.getCurso()));
 }
예제 #4
0
 public bool validar_Campo(int hora, Leccion nueva)
 {
     if (this.aulas[hora, nueva.getAula()] != null || this.bloques[hora, nueva.getBloque()] != null || this.profesores[hora, this.encargados[nueva.getBloque()][nueva.getCurso()]] != null)
     {
         return(false);
     }
     return(true);
 }
예제 #5
0
        public void cambiar_Aula(int hora, int aula, int pareja)
        {
            Leccion objetivo = this.aulas[hora, aula];

            if (Datos.listaHorariosPadres[pareja].validar_Campo(hora, this.aulas[hora, this.aulas[hora, aula].getAula()]))
            {
                Leccion nuevo = Datos.listaHorariosPadres[pareja].cambiar(objetivo, hora);
                if (this.validar_Campo(hora, nuevo))
                {
                    this.aulas[hora, nuevo.getAula()]     = nuevo;
                    this.bloques[hora, nuevo.getBloque()] = nuevo;
                    this.profesores[hora, this.encargados[nuevo.getBloque()][nuevo.getCurso()]] = nuevo;
                }
                else
                {
                    Datos.listaHorariosPadres[pareja].cambiar(nuevo, hora);
                }
            }
        }
예제 #6
0
        public Leccion cambiar(Leccion nueva, int hora)
        {
            Leccion        retorno    = this.aulas[hora, nueva.getAula()];
            List <Leccion> contenedor = new List <Leccion>();
            int            t          = Datos.listaCursos[nueva.getBloque()][nueva.getCurso()].getLecciones();

            for (int i = 0; i < 50 || contenedor.Count < t; i++)
            {
                if (this.bloques[i, nueva.getBloque()].getCurso() == nueva.getCurso())
                {
                    contenedor.Add(this.bloques[i, nueva.getBloque()]);
                }
            }
            Leccion escogida = contenedor[Datos.randy.Next(0, contenedor.Count())];

            this.aulas[hora, escogida.getAula()]     = null;
            this.bloques[hora, escogida.getBloque()] = null;
            this.profesores[hora, this.encargados[escogida.getBloque()][escogida.getCurso()]] = null;
            this.aulas[hora, nueva.getAula()]     = nueva;
            this.bloques[hora, nueva.getBloque()] = nueva;
            this.profesores[hora, this.encargados[nueva.getBloque()][nueva.getCurso()]] = nueva;
            return(retorno);
        }
 public bool setLeccion(int hora, int bloque, Leccion valor, bool clonado)
 {
     if (validar_Campo(hora, bloque, valor))
     {
         if (valor != null)
         {
             this.bloques[hora, valor.getBloque()] = valor;
             this.aulas[hora, valor.getAula()]     = valor;
             this.profesores[hora, this.datocurso[bloque][valor.getCurso()][0]] = valor;
             if (!clonado)
             {
                 this.datocurso[bloque][valor.getCurso()][1]++;
             }
         }
         return(true);
     }
     return(false);
 }
        public bool insertarFuerte(int hora, int bloque, Leccion x, int inicio, int fin)
        {
            Leccion aux;
            int     auxh;

            if (x == null)
            {
                if (!validar_bloque(hora, bloque))
                {
                    aux  = getLeccion_bloque(hora, bloque);
                    auxh = getHoraDisponible(bloque, aux, inicio, fin);
                    popLeccion(bloque, hora);
                    if (auxh == -1)
                    {
                        return(false);
                    }
                    if (!setLeccion(auxh, bloque, aux, false))
                    {
                        return(false);
                    }
                }
            }
            else
            {
                if (!validar_Campo(hora, bloque, x))
                {
                    if (!Datos.listaProfesores[getEncargado(x)].horavalida(hora) || !Datos.listaAulas[x.getAula()].horavalida(hora))
                    {
                        return(false);
                    }
                    else
                    {
                        if (!validar_bloque(hora, bloque))
                        {
                            aux  = getLeccion_bloque(hora, bloque);
                            auxh = getHoraDisponible(bloque, aux, inicio, fin);
                            if (auxh == -1)
                            {
                                return(false);
                            }
                            popLeccion(bloque, hora);
                            if (!setLeccion(auxh, bloque, aux, false))
                            {
                            }
                        }

                        if (!validar_profesor(hora, x.getBloque(), x.getCurso()))
                        {
                            aux  = getLeccion_bloque(hora, getLeccion_profesor(hora, getEncargado(x)).getBloque());
                            auxh = getHoraDisponible(aux.getBloque(), aux, inicio, fin);
                            if (auxh == -1)
                            {
                                return(false);
                            }
                            popLeccion(aux.getBloque(), hora);
                            if (!setLeccion(auxh, aux.getBloque(), aux, false))
                            {
                            }
                        }

                        if (!validar_aula(hora, x.getAula()))
                        {
                            aux  = getLeccion_bloque(hora, getLeccion_aula(hora, x.getAula()).getBloque());
                            auxh = getHoraDisponible(aux.getBloque(), aux, inicio, fin);
                            if (auxh == -1)
                            {
                                return(false);
                            }
                            popLeccion(aux.getBloque(), hora);
                            if (!setLeccion(auxh, aux.getBloque(), aux, false))
                            {
                            }
                        }
                        if (!setLeccion(hora, bloque, x, false))
                        {
                            return(false);
                        }
                    }
                }
                else
                {
                    setLeccion(hora, bloque, x, false);
                }
            }
            return(true);
        }