Advertisement
juanesperanza

TAD UrnaElectronica

Dec 8th, 2012
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.33 KB | None | 0 0
  1.                          
  2.                          ************************************
  3.              Corregido ayer martes 7/12 por prof.
  4.              ************************************
  5.              
  6. A) Implemente el TAD UrnaElectronica, cuya interface se muestra a continuación. Tener en cuenta al momento de implementar que una
  7. UrnaElectronica puede manejar a lo sumo 50 agrupaciones.  
  8.  
  9. TAD UrnaElectronica; type exportado urna;
  10. procedure CrearUrna (var u:urna; nombre: string; cant_Agrupaciones:integer)  
  11. // Crea la urna con nombre “nombre”, los códigos de las agrupaciones enumeradas de 1 a cant_Agrupaciones y sin votos
  12. function cantidadAgrupacionesPosibles(u:urna): integer;
  13. // Retorna la cantidad de agrupaciones disponibles para votar.
  14. function numeroAgrupacionValida (u: urna, num: integer) : boolean;
  15. // Retorna si el número que ingresa como parámetro corresponde a una agrupación válida.
  16. procedure votarPorAgrupacion(var u: urna; num_Agrupacion: integer) ;
  17. // Actualiza la urna sumando 1 a la agrupación cuyo número ingresa como parámetro.
  18. procedure votarEnBlanco(var u:urna);
  19. // Actualiza la urna sumando 1 al contador de votos en blanco.
  20. function cantidadDeVotosEnBlanco(u:urna): integer;
  21. // Retorna la cantidad de votos en blanco que se emitieron.
  22. function cantidadDeVotosPorAgrupacion(u: urna; num_Agrupacion: integer);
  23. // Retorna la cantidad de votos que recibió la agrupación cuyo número ingresa como parámetro.
  24.  
  25. B) Utilizando el TAD UrnaElectronica resolver el siguiente problema:
  26.  
  27. La facultad de Informática va a implementar las elecciones por medio de voto electrónico. Para ello dispone de una estructura
  28. eficiente que representa el padrón de alumnos  que cumplen las condiciones necesarias para votar en las elecciones estudiantiles
  29. de la facultad. De cada alumno se conoce: Número de Alumno, DNI y Apellido y Nombre. La estructura se encuentra ordena por el DNI
  30. del alumno.
  31.  
  32.  
  33.  
  34. {Implementación}
  35.  
  36. Implementation
  37.  
  38.     urna = record     // urna es el tipo exportado.
  39.       nombreurna:string;
  40.     agrupaciones:vector;
  41.        votosenblanco:integer;
  42.      cantidaddeagrup:integer;
  43.                end;
  44.    
  45.     vector = array [1..50] of integer // Cada posición es el código de la agrupación
  46.    
  47.     (...)
  48.    
  49.    
  50.    
  51. {Programa Principal}
  52.  
  53. program Elecciones_Ejercicio_6_Práctica17Repaso;
  54.  
  55. uses UrnaElectronica; // nombre del TAD
  56.  
  57. type
  58.  
  59.     arbol=^nodo_arbol;
  60.     nodo_arbol=record
  61.      datosalumno : padron; // Ver Nota 1)
  62.           izq:arbol;
  63.               der:arbol;
  64.      end;
  65.      
  66.     padron=record
  67.         dni:integer;
  68.         nro_alumno:integer;
  69.         apellido:string;
  70.         nombre:string;
  71.         voto:boolean;
  72.     end;
  73.  
  74. Nota 1)
  75. Según la prof. es indistinto que este DNI en el arbol, puede estar en el padron y cuando recorro el árbol, accedo directamente desde el registro (arbol^.datosalumno.dni), puesto que, esta ordenado por DNI y esta estructura ya se dispone.
  76. Sino otra forma también valida es:
  77.  
  78. {Otra forma de declarar la estructura}
  79.  
  80. (...)
  81.  
  82.     arbol=^nodo_arbol;
  83.     nodo_arbol=record
  84.                 DNI:integer; // Esto cambia
  85.         datosalumno:padron;
  86.                 izq:arbol;
  87.             der:arbol;
  88.      end;
  89.      
  90.     padron=record
  91.     nro_alumno:integer; // Si ponemos también DNI aquí, estaría duplicado y por ende, incorrecto.
  92.       apellido:string;
  93.         nombre:string;
  94.           voto:boolean;
  95.     end;
  96.    
  97. Las dos formas de hacerlo son válidas.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement