Advertisement
Angeltecno

arreglo de registros

Dec 1st, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.58 KB | None | 0 0
  1. from pyrecord import Record
  2. import random
  3. import numpy as np
  4.  
  5. # Define el registro como tipo de datos
  6. Nota = Record.create_type("Nota","legajo","nombre_apellido","nota1","nota2","nota3",legajo = 0,nombre_apellido = '',nota1 = 0,nota2 = 0,nota3 = 0)
  7.  
  8.  
  9. def cargar(vector,archivo):
  10.     archivo = open(archivo, 'r')
  11.     contador_de_lineas = 0
  12.     for linea in archivo:
  13.         vector[contador_de_lineas] = Nota()
  14.         carga_aleatoria(vector[contador_de_lineas],linea.rstrip('\n'))
  15.         contador_de_lineas += 1
  16.     archivo.close
  17.     return contador_de_lineas,vector
  18.  
  19.  
  20. def carga_aleatoria(registro, nombre):
  21.     registro.alumno = nombre
  22.     registro.legajo = random.randrange(1,1001,100)
  23.     registro.nota1 = random.randint(1,10)
  24.     registro.nota2 = random.randint(1,10)
  25.     registro.nota3 = random.randint(1,10)
  26.  
  27.  
  28.  
  29. def mostrar_registro(registro):
  30.     print("[",registro.legajo,",",registro.alumno,",",registro.nota1,",",registro.nota2,",",registro.nota3,"]",)  
  31.  
  32.  
  33. def mostrar_registro_2(registro,valor_adicional,valor_adicional1):
  34.     print("Legajo : ",registro.legajo," |Nombre y apellido: ",registro.alumno," |"," Promedio: ",
  35.     valor_adicional," |", " Condicion: ",valor_adicional1)
  36.  
  37.  
  38. def ordenar_vector(vector,cantidad):
  39.     se_hizo_un_cambio = True
  40.     while se_hizo_un_cambio:
  41.         se_hizo_un_cambio = False
  42.         indice = 1
  43.         while indice < cantidad:
  44.             if vector[indice - 1].legajo > vector[indice].legajo:
  45.                 #swap
  46.                 aux = vector[indice - 1]
  47.                 vector[indice - 1 ] = vector[indice]
  48.                 vector[indice] = aux
  49.                 se_hizo_un_cambio = True
  50.             indice += 1
  51.            
  52. def mostrar_en_rango(vector,minimo,maximo,elementos,etiqueta):
  53.     for n in range(elementos):
  54.         promedio = (vector[n].nota1 + vector[n].nota2 + vector[n].nota3 ) / 3
  55.         if (promedio >= minimo and promedio < maximo):
  56.             mostrar_registro_2(vector[n],promedio,etiqueta)
  57.        
  58.  
  59. def main():
  60.     cantidad_maxima = 100
  61.     cant_real = 0  
  62.  
  63.     # Define un vector de 100 elementos de tipo Nota pero vacio
  64.     notas = np.empty([cantidad_maxima,], dtype=Nota)
  65.     # Pedir que se cargue el vector con los datos del archivo
  66.     cant_real,notas = cargar(notas,"alumnos.txt")
  67.  
  68.  
  69.     ordenar_vector(notas,cant_real)
  70.  
  71.     # Mostrar el vector
  72.     for i in range(cant_real):
  73.         mostrar_registro(notas[i])
  74.  
  75.     mostrar_en_rango(notas,1,4,cant_real,"libre")
  76.  
  77.     mostrar_en_rango(notas,4,7,cant_real,"regular")
  78.    
  79.     mostrar_en_rango(notas,7,11,cant_real,"Promovido")
  80.  
  81.    
  82.  
  83. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement