Advertisement
Guest User

Tendedero FINAL

a guest
Nov 20th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 19.50 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Test
  5. {
  6.     class Nodo
  7.     {
  8.         public int noControl;
  9.         public string nombre;
  10.         public int noSemestre;
  11.         public int noCarrera;
  12.  
  13.         public Nodo carreraAnterior;
  14.         public Nodo siguienteCarrera;
  15.         public Nodo semestreAnterior;
  16.         public Nodo siguienteSemestre;
  17.         public Nodo alumnoAnterior;
  18.         public Nodo siguienteAlumno;
  19.  
  20.         // No copiar
  21.         public string representacion ()
  22.         {
  23.             return string.Format ("[{0} -> {1} -> {2}]",
  24.                 carreraAnterior == null ? "Nil" : carreraAnterior.coordenadas (),
  25.                 coordenadas (),
  26.                 siguienteCarrera == null ? "Nil" : siguienteCarrera.coordenadas ());
  27.         }
  28.  
  29.         // No copiar
  30.         public string coordenadas ()
  31.         {
  32.             return string.Format ("({0}, {1}, {2})", noCarrera, noSemestre, noControl);
  33.         }
  34.  
  35.         // No copiar
  36.         public override string ToString()
  37.         {
  38.             return string.Format ("No Control: {0}, Nombre: {1}, No Semestre: {2}, No Carrera: {3}", noControl, nombre, noSemestre, noCarrera);
  39.         }
  40.     }
  41.  
  42.     class Tendedero
  43.     {
  44.         public ListaCarreras carreras;
  45.  
  46.         public void insertar (int noCarrera, int noSemestre, int noControl, string nombre)
  47.         {
  48.             Nodo nodo;
  49.             nodo = new Nodo ();
  50.             nodo.noControl = noControl;
  51.             nodo.nombre = nombre;
  52.             nodo.noSemestre = noSemestre;
  53.             nodo.noCarrera = noCarrera;
  54.             nodo.alumnoAnterior = null;
  55.             nodo.siguienteAlumno = null;
  56.             nodo.semestreAnterior = null;
  57.             nodo.siguienteSemestre = null;
  58.             nodo.carreraAnterior = null;
  59.             nodo.siguienteCarrera = null;
  60.  
  61.             if (carreras == null) {
  62.                 Console.WriteLine ("Insertando inicio...");
  63.                 carreras = new ListaCarreras ();
  64.                 carreras.inicio = null;
  65.                 carreras.final = null;
  66.             }
  67.  
  68.             bool carreraExiste, semestreExiste;
  69.             Carrera carrera;
  70.             Semestre semestre;
  71.             carreraExiste = false;
  72.             semestreExiste = false;
  73.             carrera = carreras.inicio;
  74.             semestre = null;
  75.  
  76.             while (carrera != null && !carreraExiste) {
  77.                 semestre = carrera.semestres.inicio;
  78.                 if (semestre != null && semestre.alumnos.inicio.noCarrera == nodo.noCarrera) {
  79.                     carreraExiste = true;
  80.                     while (semestre != null && !semestreExiste) {
  81.                         if (nodo.noSemestre == semestre.alumnos.inicio.noSemestre) {
  82.                             semestreExiste = true;
  83.                         } else {
  84.                             semestre = semestre.siguiente;
  85.                         }
  86.                     }
  87.                 } else {
  88.                     carrera = carrera.siguiente;
  89.                 }
  90.             }
  91.  
  92.             if (carrera == null) {
  93.                 Console.WriteLine ("Insertando nueva carrera...");
  94.                 carrera = new Carrera ();
  95.                 carrera.semestres = new ListaSemestres ();
  96.                 carrera.semestres.inicio = null;
  97.                 carrera.semestres.final = null;
  98.                 semestre = null;
  99.  
  100.                 if (carreras.inicio == null || carreras.final == null) {
  101.                     carreras.inicio = carrera;
  102.                     carreras.final = carrera;
  103.                     carrera.anterior = null;
  104.                     carrera.siguiente = null;
  105.                 } else if (carreras.inicio.semestres.inicio.alumnos.inicio.noCarrera > nodo.noCarrera) {
  106.                     carrera.anterior = carreras.inicio.anterior;
  107.                     carrera.siguiente = carreras.inicio;
  108.                     carreras.inicio.anterior = carrera;
  109.                     carreras.inicio = carrera;
  110.                 } else if (carreras.final.semestres.inicio.alumnos.inicio.noCarrera < nodo.noCarrera) {
  111.                     carrera.anterior = carreras.final;
  112.                     carrera.siguiente = carreras.final.siguiente;
  113.                     carreras.final.siguiente = carrera;
  114.                     carreras.final = carrera;
  115.                 } else {
  116.                     Carrera anterior, siguiente;
  117.                     anterior = carreras.inicio;
  118.                     siguiente = anterior.siguiente;
  119.  
  120.                     while (siguiente != null &&
  121.                         siguiente.semestres.inicio.alumnos.inicio.noCarrera < nodo.noCarrera) {
  122.                         anterior = siguiente;
  123.                         siguiente = siguiente.siguiente;
  124.                     }
  125.  
  126.                     carrera.anterior = anterior;
  127.                     carrera.siguiente = siguiente;
  128.                     siguiente.anterior = carrera;
  129.                     anterior.siguiente = carrera;
  130.                 }
  131.             }
  132.  
  133.             if (semestre == null) {
  134.                 Console.WriteLine ("Insertando nuevo semestre...");
  135.                 semestre = new Semestre ();
  136.                 semestre.alumnos = new ListaAlumnos ();
  137.                 semestre.alumnos.inicio = null;
  138.                 semestre.alumnos.final = null;
  139.  
  140.                 if (carrera.semestres.inicio == null || carrera.semestres.final == null) {
  141.                     carrera.semestres.inicio = semestre;
  142.                     carrera.semestres.final = semestre;
  143.                     semestre.anterior = null;
  144.                     semestre.siguiente = null;
  145.                 } else if (carrera.semestres.inicio.alumnos.inicio.noSemestre > nodo.noSemestre) {
  146.                     semestre.anterior = carrera.semestres.inicio.anterior;
  147.                     semestre.siguiente = carrera.semestres.inicio;
  148.                     carrera.semestres.inicio.anterior = semestre;
  149.                     carrera.semestres.inicio = semestre;
  150.                 } else if (carrera.semestres.final.alumnos.inicio.noSemestre < nodo.noSemestre) {
  151.                     semestre.anterior = carrera.semestres.final;
  152.                     semestre.siguiente = carrera.semestres.final.siguiente;
  153.                     carrera.semestres.final.siguiente = semestre;
  154.                     carrera.semestres.final = semestre;
  155.                 } else {
  156.                     Semestre anterior, siguiente;
  157.                     anterior = carrera.semestres.inicio;
  158.                     siguiente = anterior.siguiente;
  159.  
  160.                     while (siguiente != null &&
  161.                         siguiente.alumnos.inicio.noSemestre < nodo.noSemestre) {
  162.                         anterior = siguiente;
  163.                         siguiente = siguiente.siguiente;
  164.                     }
  165.  
  166.                     semestre.anterior = anterior;
  167.                     semestre.siguiente = siguiente;
  168.                     siguiente.anterior = semestre;
  169.                     anterior.siguiente = semestre;
  170.                 }
  171.             }
  172.                
  173.             Console.WriteLine ("Insertando nuevo alumno...");
  174.             if (semestre.alumnos.inicio == null || semestre.alumnos.final == null) {
  175.                 semestre.alumnos.inicio = nodo;
  176.                 semestre.alumnos.final = nodo;
  177.             } else if (semestre.alumnos.inicio.noControl > nodo.noControl) {
  178.                 nodo.alumnoAnterior = semestre.alumnos.inicio.alumnoAnterior;
  179.                 nodo.siguienteAlumno = semestre.alumnos.inicio;
  180.                 semestre.alumnos.inicio.alumnoAnterior = nodo;
  181.                 semestre.alumnos.inicio = nodo;
  182.             } else if (semestre.alumnos.final.noControl < nodo.noControl) {
  183.                 nodo.alumnoAnterior = semestre.alumnos.final;
  184.                 nodo.siguienteAlumno = semestre.alumnos.final.siguienteAlumno;
  185.                 semestre.alumnos.final.siguienteAlumno = nodo;
  186.                 semestre.alumnos.final = nodo;
  187.             } else {
  188.                 Nodo anterior, siguiente;
  189.                 anterior = semestre.alumnos.inicio;
  190.                 siguiente = anterior.siguienteAlumno;
  191.  
  192.                 while (siguiente != null && siguiente.noControl < nodo.noControl) {
  193.                     anterior = siguiente;
  194.                     siguiente = siguiente.siguienteAlumno;
  195.                 }
  196.  
  197.                 nodo.alumnoAnterior = anterior;
  198.                 nodo.siguienteAlumno = siguiente;
  199.  
  200.                 siguiente.alumnoAnterior = nodo;
  201.                 anterior.siguienteAlumno = nodo;
  202.             }
  203.  
  204.             enlazarSemestre (semestre, nodo);
  205.             enlazarCarrera (carrera, semestre, nodo);
  206.         }
  207.  
  208.         public void eliminar (int noCarrera, int noSemestre, int noControl)
  209.         {
  210.             if (carreras == null) {
  211.                 Console.WriteLine ("Vacío.");
  212.             } else {
  213.                 Carrera carrera;
  214.                 Semestre semestre;
  215.                 Nodo nodo;
  216.                 carrera = null;
  217.                 semestre = null;
  218.                 nodo = null;
  219.  
  220.                 carrera = carreras.inicio;
  221.                 while (carrera != null && semestre == null) {
  222.                     if (carrera.semestres.inicio != null &&
  223.                         carrera.semestres.inicio.alumnos.inicio != null &&
  224.                         carrera.semestres.inicio.alumnos.inicio.noCarrera == noCarrera) {
  225.                         semestre = carrera.semestres.inicio;
  226.                     } else {
  227.                         carrera = carrera.siguiente;
  228.                     }
  229.                 }
  230.                 while (semestre != null && nodo == null) {
  231.                     if (semestre.alumnos.inicio != null &&
  232.                         semestre.alumnos.inicio.noSemestre == noSemestre) {
  233.                         nodo = semestre.alumnos.inicio;
  234.                     } else {
  235.                         semestre = semestre.siguiente;
  236.                     }
  237.                 }
  238.                 while (nodo != null && nodo.noControl != noControl) {
  239.                     nodo = nodo.siguienteAlumno;
  240.                 }
  241.  
  242.                 if (nodo != null) {
  243.                     Console.WriteLine ("Eliminando... ");
  244.                     desenlazarSemestre (semestre, nodo);
  245.                     desenlazarCarrera (carrera, semestre, nodo);
  246.  
  247.                     if (semestre.alumnos.inicio == semestre.alumnos.final) {
  248.                         semestre.alumnos.inicio = null;
  249.                         semestre.alumnos.final = null;
  250.                         if (carrera.semestres.inicio == carrera.semestres.final) {
  251.                             carrera.semestres.inicio = null;
  252.                             carrera.semestres.final = null;
  253.                             if (carreras.inicio == carreras.final) {
  254.                                 carreras.inicio = null;
  255.                                 carreras.final = null;
  256.                                 carreras = null;
  257.                             } else if (carreras.inicio == carrera) {
  258.                                 carreras.inicio = carrera.siguiente;
  259.                                 carreras.inicio.anterior = null;
  260.                             } else if (carreras.final == carrera) {
  261.                                 carreras.final = carrera.anterior;
  262.                                 carreras.final.siguiente = null;
  263.                             } else {
  264.                                 carrera.anterior.siguiente = carrera.siguiente;
  265.                                 carrera.siguiente.anterior = carrera.anterior;
  266.                             }
  267.                         } else if (carrera.semestres.inicio == semestre) {
  268.                             carrera.semestres.inicio = semestre.siguiente;
  269.                             carrera.semestres.inicio.anterior = null;
  270.                         } else if (carrera.semestres.final == semestre) {
  271.                             carrera.semestres.final = semestre.anterior;
  272.                             carrera.semestres.final.siguiente = null;
  273.                         } else {
  274.                             semestre.anterior.siguiente = semestre.siguiente;
  275.                             semestre.siguiente.anterior = semestre.anterior;
  276.                         }
  277.                     } else if (semestre.alumnos.inicio == nodo) {
  278.                         semestre.alumnos.inicio = nodo.siguienteAlumno;
  279.                         semestre.alumnos.inicio.alumnoAnterior = null;
  280.                     } else if (semestre.alumnos.final == nodo) {
  281.                         semestre.alumnos.final = nodo.alumnoAnterior;
  282.                         semestre.alumnos.final.siguienteAlumno = null;
  283.                     } else {
  284.                         nodo.alumnoAnterior.siguienteAlumno = nodo.siguienteAlumno;
  285.                         nodo.siguienteAlumno.alumnoAnterior = nodo.alumnoAnterior;
  286.                     }
  287.                 } else {
  288.                     Console.WriteLine ("No se encontró.");
  289.                 }
  290.             }
  291.         }
  292.  
  293.         private void enlazarSemestre (Semestre semestre, Nodo alumno)
  294.         {
  295.             Nodo anterior, nodo, siguiente;
  296.             anterior = null;
  297.             nodo = null;
  298.             siguiente = null;
  299.             bool enlazar;
  300.  
  301.             if (semestre.anterior != null) {
  302.                 anterior = semestre.anterior.alumnos.inicio;
  303.             }
  304.             nodo = semestre.alumnos.inicio;
  305.             if (semestre.siguiente != null) {
  306.                 siguiente = semestre.siguiente.alumnos.inicio;
  307.             }
  308.             enlazar = false;
  309.  
  310.             while (anterior != null || nodo != null || siguiente != null) {
  311.                 if (alumno == nodo) {
  312.                     enlazar = true;
  313.                 }
  314.  
  315.                 if (enlazar) {
  316.                     if (anterior != null) {
  317.                         anterior.siguienteSemestre = nodo;
  318.                     }
  319.                     if (nodo != null) {
  320.                         nodo.semestreAnterior = anterior;
  321.                         nodo.siguienteSemestre = siguiente;
  322.                     }
  323.                     if (siguiente != null) {
  324.                         siguiente.semestreAnterior = nodo;
  325.                     }
  326.                 }
  327.  
  328.                 if (anterior != null) {
  329.                     anterior = anterior.siguienteAlumno;
  330.                 }
  331.                 if (nodo != null) {
  332.                     nodo = nodo.siguienteAlumno;
  333.                 }
  334.                 if (siguiente != null) {
  335.                     siguiente = siguiente.siguienteAlumno;
  336.                 }
  337.             }
  338.         }
  339.  
  340.         private void desenlazarSemestre (Semestre semestre, Nodo alumno)
  341.         {
  342.             Nodo anterior, nodo, siguiente;
  343.             anterior = null;
  344.             nodo = null;
  345.             siguiente = null;
  346.             bool desenlazar;
  347.  
  348.             if (semestre.anterior != null) {
  349.                 anterior = semestre.anterior.alumnos.inicio;
  350.             }
  351.             nodo = semestre.alumnos.inicio;
  352.             if (semestre.siguiente != null) {
  353.                 siguiente = semestre.siguiente.alumnos.inicio;
  354.             }
  355.             desenlazar = false;
  356.  
  357.             while (anterior != null || nodo != null || siguiente != null) {
  358.                 if (desenlazar) {
  359.                     if (anterior != null) {
  360.                         anterior.siguienteSemestre = nodo;
  361.                     }
  362.                     if (nodo != null) {
  363.                         nodo.semestreAnterior = anterior;
  364.                         nodo.siguienteSemestre = siguiente;
  365.                     }
  366.                     if (siguiente != null) {
  367.                         siguiente.semestreAnterior = nodo;
  368.                     }
  369.                 }
  370.  
  371.                 if (alumno == nodo) {
  372.                     desenlazar = true;
  373.                 }
  374.  
  375.                 if (anterior != null && nodo != alumno && alumno != null) {
  376.                     anterior = anterior.siguienteAlumno;
  377.                 }
  378.                 if (nodo != null) {
  379.                     nodo = nodo.siguienteAlumno;
  380.                 }
  381.                 if (siguiente != null && nodo != alumno && alumno != null) {
  382.                     siguiente = siguiente.siguienteAlumno;
  383.                 }
  384.             }
  385.         }
  386.  
  387.         private void enlazarCarrera (Carrera carrera, Semestre semestre, Nodo alumno)
  388.         {
  389.             Semestre semestreAnterior, semestreNodo, siguienteSemestre;
  390.             semestreAnterior = null;
  391.             semestreNodo = null;
  392.             siguienteSemestre = null;
  393.             Nodo anterior, nodo, siguiente;
  394.             anterior = null;
  395.             nodo = null;
  396.             siguiente = null;
  397.             bool enlazar;
  398.  
  399.             if (carrera.anterior != null) {
  400.                 semestreAnterior = carrera.anterior.semestres.inicio;
  401.             }
  402.             semestreNodo = carrera.semestres.inicio;
  403.             if (carrera.siguiente != null) {
  404.                 siguienteSemestre = carrera.siguiente.semestres.inicio;
  405.             }
  406.             enlazar = false;
  407.  
  408.             while (semestreAnterior != null || semestreNodo != null || siguienteSemestre != null) {
  409.                 if (semestre == semestreNodo) {
  410.                     enlazar = true;
  411.                 }
  412.  
  413.                 if (enlazar) {
  414.                     if (semestreAnterior != null) {
  415.                         anterior = semestreAnterior.alumnos.inicio;
  416.                     }
  417.                     if (semestreNodo != null) {
  418.                         nodo = semestreNodo.alumnos.inicio;
  419.                     }
  420.                     if (siguienteSemestre != null) {
  421.                         siguiente = siguienteSemestre.alumnos.inicio;
  422.                     }
  423.  
  424.                     while (anterior != null || nodo != null || siguiente != null) {
  425.                         if (anterior != null) {
  426.                             anterior.siguienteCarrera = nodo;
  427.                         }
  428.                         if (nodo != null) {
  429.                             nodo.carreraAnterior = anterior;
  430.                             nodo.siguienteCarrera = siguiente;
  431.                         }
  432.                         if (siguiente != null) {
  433.                             siguiente.carreraAnterior = nodo;
  434.                         }
  435.  
  436.                         if (anterior != null) {
  437.                             anterior = anterior.siguienteAlumno;
  438.                         }
  439.                         if (nodo != null) {
  440.                             nodo = nodo.siguienteAlumno;
  441.                         }
  442.                         if (siguiente != null) {
  443.                             siguiente = siguiente.siguienteAlumno;
  444.                         }
  445.                     }
  446.                 }
  447.  
  448.                 if (semestreAnterior != null) {
  449.                     semestreAnterior = semestreAnterior.siguiente;
  450.                 }
  451.                 if (semestreNodo != null) {
  452.                         semestreNodo = semestreNodo.siguiente;
  453.                 }
  454.                 if (siguienteSemestre != null) {
  455.                     siguienteSemestre = siguienteSemestre.siguiente;
  456.                 }
  457.             }
  458.  
  459.         }
  460.  
  461.         private void desenlazarCarrera (Carrera carrera, Semestre semestre, Nodo alumno)
  462.         {
  463.             Semestre semestreAnterior, semestreNodo, siguienteSemestre;
  464.             semestreAnterior = null;
  465.             semestreNodo = null;
  466.             siguienteSemestre = null;
  467.             Nodo anterior, nodo, siguiente;
  468.             anterior = null;
  469.             nodo = null;
  470.             siguiente = null;
  471.             bool desenlazar;
  472.  
  473.             if (carrera.anterior != null) {
  474.                 semestreAnterior = carrera.anterior.semestres.inicio;
  475.             }
  476.             semestreNodo = carrera.semestres.inicio;
  477.             if (carrera.siguiente != null) {
  478.                 siguienteSemestre = carrera.siguiente.semestres.inicio;
  479.             }
  480.             desenlazar = false;
  481.  
  482.             while (semestreAnterior != null || semestreNodo != null || siguienteSemestre != null) {
  483.                 if (desenlazar) {
  484.                     if (semestreAnterior != null) {
  485.                         anterior = semestreAnterior.alumnos.inicio;
  486.                     }
  487.                     if (semestreNodo != null) {
  488.                         nodo = semestreNodo.alumnos.inicio;
  489.                     }
  490.                     if (siguienteSemestre != null) {
  491.                         siguiente = siguienteSemestre.alumnos.inicio;
  492.                     }
  493.  
  494.                     while (anterior != null || nodo != null || siguiente != null) {
  495.                         if (anterior != null) {
  496.                             anterior.siguienteCarrera = nodo;
  497.                         }
  498.                         if (nodo != null) {
  499.                             nodo.carreraAnterior = anterior;
  500.                             nodo.siguienteCarrera = siguiente;
  501.                         }
  502.                         if (siguiente != null) {
  503.                             siguiente.carreraAnterior = nodo;
  504.                         }
  505.  
  506.                         if (anterior != null && nodo != alumno && alumno != null) {
  507.                             anterior = anterior.siguienteAlumno;
  508.                         }
  509.                         if (nodo != null) {
  510.                             nodo = nodo.siguienteAlumno;
  511.                         }
  512.                         if (siguiente != null && nodo != alumno && alumno != null) {
  513.                             siguiente = siguiente.siguienteAlumno;
  514.                         }
  515.                     }
  516.                 }
  517.  
  518.                 if (semestre == semestreNodo) {
  519.                     desenlazar = true;
  520.                 }
  521.  
  522.                 if (semestreAnterior != null) {
  523.                     semestreAnterior = semestreAnterior.siguiente;
  524.                 }
  525.                 if (semestreNodo != null) {
  526.                     semestreNodo = semestreNodo.siguiente;
  527.                 }
  528.                 if (siguienteSemestre != null) {
  529.                     siguienteSemestre = siguienteSemestre.siguiente;
  530.                 }
  531.             }
  532.  
  533.         }
  534.  
  535.         // No copiar
  536.         public Nodo buscar (int noCarrera, int noSemestre, int noControl)
  537.         {
  538.             Carrera carrera;
  539.             Semestre semestre;
  540.             Nodo nodo;
  541.  
  542.             carrera = null;
  543.             semestre = null;
  544.             nodo = null;
  545.  
  546.             carrera = carreras.inicio;
  547.             for (int i = 1; i < noCarrera && carrera != null; i++) {
  548.                 carrera = carrera.siguiente;
  549.             }
  550.             if (carrera != null) {
  551.                 semestre = carrera.semestres.inicio;
  552.                 for (int i = 1; i < noSemestre && semestre != null; i++) {
  553.                     semestre = semestre.siguiente;
  554.                 }
  555.             }
  556.             if (semestre != null) {
  557.                 nodo = semestre.alumnos.inicio;
  558.                 for (int i = 1; i < noControl && nodo != null; i++) {
  559.                     nodo = nodo.siguienteAlumno;
  560.                 }
  561.             }
  562.  
  563.             return nodo;
  564.         }
  565.     }
  566.  
  567.     class ListaCarreras
  568.     {
  569.         public Carrera inicio, final;
  570.     }
  571.  
  572.     class Carrera
  573.     {
  574.         public ListaSemestres semestres;
  575.         public Carrera anterior, siguiente;
  576.     }
  577.  
  578.     class ListaSemestres
  579.     {
  580.         public Semestre inicio, final;
  581.     }
  582.  
  583.     class Semestre
  584.     {
  585.         public ListaAlumnos alumnos;
  586.         public Semestre anterior, siguiente;
  587.     }
  588.  
  589.     class ListaAlumnos
  590.     {
  591.         public Nodo inicio, final;
  592.  
  593.         // No copiar
  594.         public void imprimir ()
  595.         {
  596.             Nodo t = inicio;
  597.             while (t != null) {
  598.                 Console.WriteLine (t);
  599.                 t = t.siguienteAlumno;
  600.             }
  601.         }
  602.     }
  603.  
  604.     class MainClass
  605.     {
  606.         static void Main(string[] args)
  607.         {
  608.             Tendedero tendedero = new Tendedero ();
  609.             string respuesta;
  610.             do {
  611.                 Console.WriteLine ("Menú");
  612.                 Console.WriteLine ("1. Insertar alumno");
  613.                 Console.WriteLine ("2. Reporte de alumnos");
  614.                 Console.WriteLine ("3. Salir");
  615.                 Console.WriteLine ();
  616.                 Console.Write ("¿Qué desea hacer? ");
  617.                 respuesta = Console.ReadLine ();
  618.                 Console.WriteLine ();
  619.                 if (respuesta == "1") {
  620.                     insertarAlumno (tendedero);
  621.                 } else if (respuesta == "2") {
  622.                     reporteAlumnos (tendedero);
  623.                 }
  624.             } while (respuesta != "3");
  625.         }
  626.  
  627.         public static void insertarAlumno (Tendedero tendedero) {
  628.             int noCarrera, noSemestre, noControl;
  629.             string nombre;
  630.             Console.Write ("¿Cuál es el numero de control del alumno? ");
  631.             noControl = int.Parse (Console.ReadLine ());
  632.             Console.Write ("¿Cuál es el nombre del alumno? ");
  633.             nombre = Console.ReadLine ();
  634.             Console.Write ("¿Cuál es la carrera del alumno (en número)? ");
  635.             noCarrera = int.Parse (Console.ReadLine ());
  636.             Console.Write ("¿Cuál es el semestre del alumno? ");
  637.             noSemestre = int.Parse (Console.ReadLine ());
  638.             Console.WriteLine ();
  639.             tendedero.insertar (noCarrera, noSemestre, noControl, nombre);
  640.             Console.WriteLine ("¡Se ha insertado con éxito!");
  641.             Console.WriteLine ();
  642.         }
  643.  
  644.         public static void reporteAlumnos (Tendedero tendedero) {
  645.             int noCarrera, noSemestre, noControl;
  646.             Console.Write ("¿Cuál carrera desea consulatar (en número)? ");
  647.             noCarrera = int.Parse (Console.ReadLine ());
  648.             Console.Write ("¿Cuál semestre desea consultar? ");
  649.             noSemestre = int.Parse (Console.ReadLine ());
  650.  
  651.             Carrera carrera;
  652.             Semestre semestre;
  653.             Nodo nodo;
  654.  
  655.             carrera = tendedero.carreras.inicio;
  656.             semestre = null;
  657.             nodo = null;
  658.             while (carrera != null && nodo == null) {
  659.                 semestre = carrera.semestres.inicio;
  660.                 if (semestre.alumnos.inicio != null &&
  661.                     semestre.alumnos.inicio.noCarrera == noCarrera) {
  662.                     while (semestre != null && nodo == null) {
  663.                         if (semestre.alumnos.inicio.noSemestre == noSemestre) {
  664.                             nodo = semestre.alumnos.inicio;
  665.                         } else {
  666.                             semestre = semestre.siguiente;
  667.                         }
  668.                     }
  669.                     carrera = null;
  670.                 } else {
  671.                     carrera = carrera.siguiente;
  672.                 }
  673.             }
  674.  
  675.             Console.WriteLine ();
  676.  
  677.             if (nodo == null) {
  678.                 Console.WriteLine ("Vacío.");
  679.             } else {
  680.                 while (nodo != null) {
  681.                     Console.WriteLine (nodo);
  682.                     nodo = nodo.siguienteAlumno;
  683.                 }
  684.             }
  685.  
  686.             Console.WriteLine ();
  687.         }
  688.     }
  689. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement