import psycopg2
import os

DATABASE_URL = "PATH" 

def leer_resistencias_db():
    matriz = []

    try:
        conexion_bd = psycopg2.connect(DATABASE_URL)
        bd = conexion_bd.cursor()

        bd.execute("SELECT id, resistencia FROM DATOS")
        filas = bd.fetchall()

        for fila in filas:
            matriz.append([int(fila[0]), float(fila[1])])

        bd.close()
        conexion_bd.close()

    except Exception as e:
        print("Error al leer desde la base de datos:", e)

    return matriz

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
   
def imprimir_resultados(vmedia, vmoda, vrango):
    print("Media:", vmedia)
    print("Moda:", vmoda)
    print("Rango:", vrango)

matriz = leer_resistencias_db()

print(matriz)

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

imprimir_resultados(vmedia, vmoda, vrango)