# viga simple multicarga
# permite usar dos modos el interactivo y el automatico
# en el interactivo, pide los datos de cargas y posicion hasta la entrada de una Q
# en el automatico usa los datos codificados en el fuente
# se elige el modo cambiando la variable modo
import os
os.system("clear")

p=[]
l=[]
flag=0
modo="auto"
#modo="inter"

def imprime_vector(x):
    for i in range(len(x)):
        print i,x[i]
        
if modo=="inter":
    L=float(raw_input("Longitud viga"))
    partes=int(raw_input("Partes:"))
    
    while flag==0:
        dum=raw_input("Ingrese carga Q/q termina")
        #print "."+dum+"-"
        if dum=="Q" or dum=="q":
            flag=1
        else:
            dum2=raw_input("Distancia:")
            p.append(float(dum))
            l.append(float(dum2))
            
            flag=0
else:
    L=6.0
    P=100.0
    p=[-50.0,-100.0,-200.0]
    l=[2.0,3.0,4.0]
    partes=20

RB=0.0
RA=0.0

for i in range(len(p)):
    RB=RB-p[i]*l[i]/L
    RA=RA-p[i]*(L-l[i])/L

print "RA:",RA,"RB:",RB
p.insert(0,RA)
l.insert(0,0.0)
p.append(RB)
l.append(L)
#imprime_vector(p)
#imprime_vector(l)
incre=L/partes
for i in range(partes+1):
    tacho=0.0
    posicion=i*incre
    for j in range(len(p)):
        if l[j]<=posicion:
            tacho=tacho+p[j]
    print "X:{0:>6.3} carga {1:>8.3f}".format(posicion,tacho)
