Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INGENIERÍA EN SISTEMAS
Centro Universitario de Cuilapa, Santa Rosa, Guatemala, C. A.
Asignatura: Programación III Código: 2014-22 Inicio: 02-02-2020
Ciclo: Quinto Sección: A Semestre: Primero Final: 05-05-2020
Instrucciones generales: Las respuestas deberán incluirse al final de cada serie del examen, es decir, en este mismo documento.
SERIE I: Desarrolle lo siguiente aplicando su conocimiento, creatividad, ingenio y sobre todo Estructuras de datos dinámicas.
La compañía farmacéutica “FARMLIST”, está proyectando el lanzamiento de su tienda virtual “VIRTUAL STORE – COVID 19” que se dedicará únicamente a
la gestión de las cotizaciones de los clientes de productos relacionados con la prevención de la pandemia. Debido al confinamiento, se prevé una gran cantidad de
clientes (innumerables) que desean cotizar diferentes productos (también innumerables) al mismo instante, tal y como se muestra en la imagen de abajo, como
ejemplo:
Se le pide que desarrolle una solución para registrar a todos los clientes y productos que cada cliente vayan cotizando en la tienda virtual. Es importante
mencionar que un cliente puede cotizar desde 1 producto hasta n productos. De la misma manera, pueden estar cotizando desde 1 cliente hasta n clientes.
Código fuente de toda la solución basado en el MENÚ PRINCIPAL (se calificará secuencia, orden del código y breves comentarios en su código),
ponga énfasis en las acciones del menú principal.
Menú } static void Main(string[] args)
{
Listad opc = new Listad();
int opcion;
do
{
Console.Clear();
switch (opcion)
{
case 1:
Console.Clear();
1.InsertarNodo();
break;
case 2:
Console.Clear();
Console.WriteLine("\t\t\t Totalizacion de Datos \n");
1.Mostrar();
Console.ReadKey();
break;
case 3:
Console.Clear();
1.Buscar();
Console.ReadKey();
break;
case 4:
Console.Clear();
1.Modificar();
Console.ReadKey();
break;
case 5:
1.Inicio();
Console.ReadKey();
break;
case 6:
1.MoverSiguiente();
break;
case 7:
1.MoverAnterior();
break;
}
} while (opcion != 7);
}
}
}
Clase Listad
class Lista
{
Todo esfuerzo merece y obtiene su recompensa, ¡Éxitos!
private Nodo Primero = new Nodo();//apunta al primer nodo
private Nodo Ultimo = new Nodo();//apunta al ultimo nodo
}
public void Lista()
{
Nodo actual = new Nodo();//recorre los Datos que hemos ingresado
}
public void Anterior()
{
Nodo actual = new Nodo();
actual = Ultimo;
if (actual != null)
{
Console.WriteLine("\t\t\t Nombre: " + actual.Nombre);
Console.WriteLine("\t\t\t Apellido: " + actual.Apellido);
Console.WriteLine("\t\t\t Codigo: " + actual.dato);
Console.WriteLine("\t\t\t Descripcion: " + actual.Descripcion);
Console.WriteLine("\t\t\t Cantidad: " + actual.Cantidad);
Console.WriteLine("\t\t\t Descripcion del Producto: " + actual.DescripciondelProducto);
Console.WriteLine("\t\t\t Precio: " + actual.Precio);
Console.WriteLine("\t\t\t Descuento " + actual.Descuento);
Console.WriteLine("\t\t\t Cantidad Descontada " + actual.desct);
Console.WriteLine("\t\t\t Total a Pagar " + actual.tot);
Ultimo = Ultimo.anterior;
MoverAnterior();
}
else
{
Console.WriteLine("\t\t\t Usted esta a punto de llegar al final");
}
}
public void MoverSiguiente() //Validar Dato
{
string respuesta;
int num;
do
{
Console.WriteLine("Siguiente Dato ");
num = int.Parse(Console.ReadLine());
if (num == 1) //llama al metodo siguiente siempre y cuando sea mayor que 1
{
siguiente();
}
else
{
Console.WriteLine("No hay elementos.");
}
Console.WriteLine("Decea continuar (si = si, n = no).");
respuesta = Console.ReadLine();
Menú incio
Ingreso de Datos
Buscar
Inicio
Anterior
SERIE II: A continuación, lea detenidamente cada interrogante, respóndalas de forma clara y concisa, según corresponde.
1. ¿Qué sucede si en una lista doblemente enlazada se pierde el primer y ultimo nodo tipo apuntador, justifique su respuesta?
Lo que sucede es que ya no tenemos acceso a la lista la perdemos por completo ya que no sabemos dónde queda el apuntador y en donde es donde empieza
la lista. Ocasionando que ya no podemos recorrerla en ningún sentido
2. ¿ ¿Desarrolle en C# un único método para crear y deshacer una lista doblemente enlazada, asumiendo que la lista ya contiene datos?
TotalNodos++;
return $"Elemento ingresado{dato}al inicio de la lista";
}
else
{
if (EstaVacia())
return "La lista esta vacia...";
else if (primerNodo == ultimoNodo)
{
primerNodo = ultimoNodo = null;
}
else
{
Nodo NodoEliminar;
NodoEliminar = primerNodo;
primerNodo = primerNodo.ligasiguiente;
primerNodo.LigaAnterior = null;
NodoEliminar = null;
}
TotalNodos--;
Todo esfuerzo merece y obtiene su recompensa, ¡Éxitos!
return "Nodo Eliminado";
}
3. Si en Estructuras de Datos, un único nodo es considerado un árbol, entonces, ¿cualquier nodo único es árbol?, justifique su respuesta demostrando las
características que debe reunir un único nodo para que ser considerado árbol.
En una estructura de Datos un nodo será considerado un árbol siempre y cuando no este vacío, no importa que sea nodo raíz siempre será considerado un
árbol. Sabemos que un subárbol es cualquier nodo de un árbol incluyendo sus descendientes siempre y cuando aplique las siguientes características.
1. Todo árbol que no es vacío contiene un nodo llamado raíz.
2. Un nodo X es descendiente de un nodo Y, siempre y cuando sea apuntado por X para el nodo Y
3. Un nodo es antecesor directo, si el nodo x apunta al Y
4. Todos los nodos son descendientes directos Hijo de un nodo padre son hermanos.
5. El nodo que no tiene ramificación se conoce como hoja
6. El grado es el numero descendientes de un nodo determinado
7. El nivel es el numero de arcos que deben ser recorrido para llegar a un nodo
8. La altura es el numero de niveles que tiene un árbol.
4.
SERIE III: Del siguiente árbol, encuentre lo que a continuación se le pide dejando constancia de todo el proceso para obtener el
resultado:
2. Grado de Árbol:
Este árbol es de Grado 3
3. LCIM
Lo obtengo con estas formulas
LCI=1X1+2X3+3X4+4X5+5X4+6X6+7X2+8X1 = 117
LCIM= 117/26=4.5
4. LCEM
CONTIENE 53 NODOS ESPECIALES
LCE=317
4X3+6X4+12X5+7X6+16X7+5X8+3X9=317
12+24+60+42+112+40+27=317
LCEM=317/53= 5.98