//Añadir semanas a la nómina. Pasamos tanto la nómina temporal como un la semana a añadir mediante referencias. public static void CreaSemana(ref Nomina[] Nomina, ref Nomina semana) { String cadena = null; Nomina[] nomcop = null; if (semana.ID_pre < Nomina.Length) //Si el número de semana es menor que la longitud de la semana, se inserta en su posición. { Nomina[semana.ID_pre - 1] = semana; } else //En caso contrario redimensionamos la nómina para hacer sitio a la nueva semana y se inserta en su posición. { nomcop = new Nomina[Nomina.Length]; Nomina.CopyTo(nomcop, 0); Nomina = new Nomina[semana.ID_pre + 1]; nomcop.CopyTo(Nomina, 0); nomcop = null; } Nomina[semana.ID_pre - 1] = semana; // SALIDA cadena += "\n\n\t Se ha añadido la semana " + semana.ID_pre; }
//Método de eliminación de semana public static void ProcesoEliminarSemana(ref Nomina[] Nomina, int semana) { int i = 0; int j = 0; Nomina[] copiaNomina; bool existesemana; String cadena = ""; //Existe la semana? existesemana = ExisteNomina(ref Nomina, semana); if (!existesemana) { cadena = "\n\t\t La semana no existe"; } else//Si la semana existe { copiaNomina = new Nomina[Nomina.Length]; //Creamos un Array en el que copiamos la nómina for (i = 0; i <= copiaNomina.Length - 1; i++, j++) { if (i != (semana - 1)) //En caso que el contador sea distinto a la posición de la seman en el array se copia en copianomina { copiaNomina[j] = Nomina[i]; } } //Array dinámico (Una vez copiado todo, redimensionamos el array eliminando una seman y vaciándolo Nomina = new Nomina[copiaNomina.Length]; copiaNomina.CopyTo(Nomina, 0); //Copiamos el array copia en la nómina //Ponemos el array de copia en Null para ahorrar memoria copiaNomina = null; cadena = "\n\t\t Semana eliminada con éxito"; } cadena += "\n\t\tPulse ENTER para continuar\n"; Interfaz.Continuar(cadena); }