from pathlib import Path

def leer_resistencias(nombre_archivo):
    ruta = Path(nombre_archivo)

    if not ruta.exists():
        print(f"El archivo {nombre_archivo} NO existe.")
        return []

    matriz = []

    with open(nombre_archivo, "r") as archivo:
        encabezado = True
        for linea in archivo:
            if encabezado:
                encabezado = False
            else:
                partes = linea.strip().split()
                
                try:
                    matriz.append([int(partes[0]), float(partes[1])])
                except ValueError:
                    pass

    return matriz

def guardar_resultado(nombre_archivo, vmedia, vmoda, vrango):
    with open(nombre_archivo, "w") as archivo:
        archivo.write(f"Media: {vmedia}\n")
        archivo.write(f"Moda: {vmoda}\n")
        archivo.write(f"Rango (max - min): {vrango}\n")

def media(matriz):
    suma = 0
    cant = 0
    for i in range(len(matriz)):
        suma += matriz[i][1]
        cant += 1
    vmedia = suma / cant
    return vmedia

def moda(matriz):
    max_frecuencia = 0
    valor_moda = 0

    for i in range(len(matriz)):
        contador = 0

        for j in range(len(matriz)):
            if matriz[i][1] == matriz[j][1]:
                contador += 1

        if contador > max_frecuencia:
            max_frecuencia = contador
            vmoda = matriz[i][1]

    return vmoda

def rango(matriz):
    max = 0
    min = 0
    for i in range(len(matriz)):
        if matriz[i][1] > max:
            max = matriz[i][1]
        if matriz[i][1] < min:
            min = matriz[i][1]
    vrango = max - min
    return vrango
   
matriz = leer_resistencias("analisis-entrada.txt")

vmedia = media(matriz)
vmoda = moda(matriz)
vrango = rango(matriz)

guardar_resultado("analisis-salida.txt", vmedia, vmoda, vrango)