DECLARE FUNCTION fact (pc)
DIM SHARED pm(12)
pm(1) = 260
pm(2) = 320
pm(3) = 340
pm(4) = 600
pm(5) = 450
pm(6) = 460
pm(7) = 300
pm(8) = 280
pm(9) = 360
pm(10) = 320
pm(11) = 350
pm(12) = 0

pmm = 0
FOR i = 1 TO 12
pmm = pmm + pm(i)
NEXT i
pmm = pmm / 12
pc = INT(pmm)
PRINT pc

pfo = 24 * pmm
DO WHILE fact(pc) < pfo
pfo = fact(pc)
pc = pc + 1
LOOP
pc = pc - 1 + .01

DO WHILE fact(pc) < pfo
pfo = fact(pc)
pc = pc + .01
LOOP
pc = pc - .01
pco = pc

PRINT "Potencia Contrada āptima "; pco; "kW"
PRINT "Potencia Facturada Media "; pfo / 12; "kW"
INPUT " Pot contratada actual "; pc
PRINT "Pot fact. media actual "; fact(pc) / 12; "kW"
STOP

pc = pco - 5

j = 0
FOR j = 0 TO 100
PRINT pc; " "; fact(pc) / 12
pc = pc + .1
NEXT j

FUNCTION fact (pc)
facturacion = 0

FOR i = 1 TO 12
aux1 = 0
IF pm(i) <= .85 * pc THEN aux1 = .85 * pc
IF .85 * pc < pm(i) AND pm(i) < 1.05 * pc THEN aux1 = pm(i)
IF 1.05 * pc <= pm(i) THEN aux1 = 2 * (pm(i) - 1.05 * pc) + pm(i)
facturacion = facturacion + aux1
NEXT i
fact = facturacion

END FUNCTION

