public static void Prueba_Cola() { int? dato = 0; Cola cola = new Cola(); cola.Encolar(10); cola.Encolar(20); dato = cola.Desencolar(); //10 Console.WriteLine($"Desencolado:{dato}"); //10 dato = cola.Desencolar(); //20 Console.WriteLine($"Desencolado:{dato}"); //20 Console.WriteLine($"y en la cola quedo:"); cola.Mostrar(); }
private void desencolar() { ColaEspera.Desencolar(); total--; primero.Image = segundo.Image; segundo.Image = tercero.Image; tercero.Image = cuarto.Image; cuarto.Image = null; // ColaEspera.Mostrar(); }
/// <summary> /// Toma todas las colas y listas de la edición, y conforme el indiceEdicion, va editando el PDF /// de lo que contengan las colas y listas /// Algoritmo: /// Cada una de los objeto alojados en las colas y listas, tiene un índice /// ese indice va incrementando segun se vaya editado el PDF en general, /// A la larga puede que los indices queden así: /// -> Texto {1,4,8,9} /// -> Imagen {2,3,5} /// -> Tabla {6,7} /// El ciclo for que contiene el metodo va recorriendo el indice de cada objeto alojado /// en las listas/colas y las va agregando al PDF, en el orden en el que fue editado originalmente el PDF /// a través de comandos /// Conforme se vayan agregando las colas/listas, estas se van vaciando /// </summary> /// <param name="url"></param> /// <param name="indiceEdicion"></param> /// <param name="Textos"></param> /// <param name="Imagenes"></param> /// <param name="Tablas"></param> /// <param name="Filas"></param> /// <returns>Respuesta del sistema</returns> public String GenerarPDF(String url, int indiceEdicion, Cola Textos, Cola Imagenes, Cola Tablas, ListaSimple Filas) { //Se guardará la respuesta del sistema String respuesta = ""; //Aquí se guardarán las intancias que ayudaran en la creación del PDF Document doc = null; FileStream fs = null; PdfWriter writer = null; //Edita el PDF en un entorno a prueba de idiotas :v try { //Crea el documento pdf (lo instancia) doc = new Document(PageSize.A4, 30f, 30f, 30f, 30f); //Prepara el documento para su escritura fs = new FileStream(url + "\\" + nombre + ".pdf", FileMode.Create, FileAccess.Write, FileShare.None); //Determina la localización del PDF dentro de writer = PdfWriter.GetInstance(doc, fs); if (!Textos.EsVacia() || !Imagenes.EsVacia() || !Tablas.EsVacia()) { //Abre el documento para editarlo doc.Open(); } for (int i = 1; i <= indiceEdicion; i++) { //Verifica si la cola está vacía if (!Textos.EsVacia()) { //Castea a Texto Texto text = (Texto)Textos.ShutearPrimero(); //Verifica que el indice guardado coincida con la <i> if (text.indice == i) { //Agrega texto al PDF doc.Add(text.texto); //Elimna información de la lista Textos.Desencolar(); } } //Verifica si la cola está vacía if (!Imagenes.EsVacia()) { //Esta instancia ayudara a agregar imagenes si las hubiera iTextSharp.text.Image jpg; //Caste a Imagen Imagen image = (Imagen)Imagenes.ShutearPrimero(); //Verifica que el indice guardado coincida con la <i> if (image.indice == i) { //Aloja la referencia guardada jpg = image.imagen; //Encaja la imagen en el documento jpg.ScaleToFit(400f, 300f); //Deja un espacio antes y despues de la imagen jpg.SpacingBefore = 12f; jpg.SpacingAfter = 12f; //Establece al alineacion jpg.Alignment = image.alineacion; //Agrega la imagen al PDF doc.Add(jpg); //Elimina infomación de la cola Imagenes.Desencolar(); } } //Verifica si la cola está vacía if (!Tablas.EsVacia()) { //Esta instancia ayudara a agrega tablas si las hubiera iTextSharp.text.pdf.PdfPTable pTable; //Catea a Tabla Tabla table = (Tabla)Tablas.ShutearPrimero(); //Verifica que el indice guardado coincida con la <i> if (table.indice == i) { //Aloja la referencia guardada pTable = new PdfPTable(1) { //Alinea la tabla HorizontalAlignment = Element.ALIGN_CENTER, //Espacio antes y despues SpacingBefore = 12f, SpacingAfter = 12f }; //Añade el encabezado PdfPCell encabezado = new PdfPCell(new Phrase(table.encabezado)) { Colspan = 1, //Indica cuantas columna se combinan HorizontalAlignment = 1 //Indica la alineación de la tabla }; //Añade el encabezado a la tabla pTable.AddCell(encabezado); //Busca en la lista de Filas todas las filas relacionadas for (int j = 0; j < Filas.GetLargo(); j++) { //Busca una Fila (desde adelante hasta atrás) que tenga el nombre de la Tabla Fila auxRow = Filas.BuscarFila(table.nombre); //Verifica que auxRow no sea nulo if (Filas.Buscar(auxRow)) { //Agrega la Fila almacenada en Filas que se relacionen con la tabla en cuestión :v pTable.AddCell(auxRow.textoplano); //Elimina la Fila de la Lista Filas.Remover(auxRow); } } //Añade la tabla al documento doc.Add(pTable); //Elimina información de la Cola Tablas.Desencolar(); } } } } catch (Exception ex) //Ocurre un error { respuesta += "La escritura de archivo PDF se detuvo. Posible pérdida de datos " + ex.Message; } finally { try { //Si la instancia doc no es nula intentará cerrarla if (doc != null) { doc.Close(); respuesta += "Archivo PDF creado con éxito. Absolute Path -> " + url + "\\" + nombre + ".pdf"; } } catch (Exception ex2) { //Ocurre un error al cerrar respuesta += Environment.NewLine + "No se pudo cerrar la escritura de PDF. " + ex2.Message; } } return(respuesta); }
static void Main(string[] args) { Pila pila = new Pila(); Cola cola = new Cola(); Opciones op = new Opciones();//Constructor de la clase Opciones Console.Write("\t\t\t\tTAREA TDA COLA TDA PILA"); Console.WriteLine("\n\t\tIngrese el numero correspondiente al tipo de TDA con el que " + "\n\t\tdesea trabajar" + "\n\t\t\t (1).- PILA" + "\n\t\t\t (2).- COLA" + "\n\t\t\t (3).- SALIR"); Console.Write("\t\t\t\tOpcion: "); op.Option = Convert.ToByte(Console.ReadLine()); /*---------------------------------------------------------------------------------------------------------------------------------------*/ if (op.Option == 1) { Console.Clear(); do { Console.WriteLine("\t\t-------------------------------------------------------"); Console.WriteLine("\t\t|\t\t\tTDA PILA ORIENTADA A OBJETOS"); Console.WriteLine("\t\t|Ingrese opcion:" + "\n\t\t|\t(1) Apilar datos (String) en la Pila" + "\n\t\t|\t(2) Imprimir datos (String) de la Pila:" + "\n\t\t|\t(3) Desapilar datos (String) de la pila" + "\n\t\t|\t(4) Mostrar la cima o tope (String) de la pila"); Console.Write("\t\t|\t\t\tOption: "); op.OptionPila = Convert.ToByte(Console.ReadLine()); Console.WriteLine("\t\t-------------------------------------------------------"); switch (op.OptionPila) { case 1: pila.Apilar(); break; case 2: pila.Imprimir(); break; case 3: pila.Desapilar(); break; case 4: pila.Cima(); break; } } while (op.Option != 7); } /*---------------------------------------------------------------------------------------------------------------------------------------*/ if (op.Option == 2) { Console.Clear(); do { Console.WriteLine("\t\t-------------------------------------------------------"); Console.WriteLine("\t\t|\t\t\tTDA COLA ORIENTADA A OBJETOS"); Console.WriteLine("\t\t|Ingrese opcion:" + "\n\t\t|\t(1) Encolar datos (String) en la Cola" + "\n\t\t|\t(2) Imprimir datos (String) de la Cola:" + "\n\t\t|\t(3) Desencolar datos (String) de la Cola" + "\n\t\t|\t(4) Mostrar la cima o tope de la Cola"); Console.Write("\t\t|\t\t\tOption: "); op.Optioncola = Convert.ToByte(Console.ReadLine()); Console.WriteLine("\t\t-------------------------------------------------------"); switch (op.Optioncola) { case 1: cola.Encolar(); break; case 2: cola.Imprimir(); break; case 3: cola.Desencolar(); break; case 4: cola.Cima(); break; } } while (op.Option != 5); } else { Console.ReadKey(); } }