Está en la página 1de 8

Imports System

Module Program
Sub Main()

Console.WriteLine("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:" + vbCrLf)
Console.WriteLine("PROGRAMA PARA ANALIZAR VIGA CONTINUA - ECUACION DE TRES
MOMENTOS" + vbCrLf)

Console.WriteLine("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:" + vbCrLf)
'DATOS DE LA ESTRUCTURA
Console.WriteLine("DATOS DE LA ESTRUCTURA")
Console.WriteLine("-----------------------" + vbCrLf)
Console.WriteLine("Introduzca el n�mero de tramos existentes:")
Dim NT = Console.ReadLine()
Dim z = NT - 1
Dim L(z), I(z), E As Double
Dim j, k As Double
Console.WriteLine(vbCrLf + "Introduzca el valor de la luz (L) de cada
tramo:")
For j = 0 To z
k = j + 1
Console.WriteLine($"{vbCrLf}Luz (L) del tramo {k}:")
L(j) = Console.ReadLine()
Next
Console.WriteLine(vbCrLf + "�Todos los tramos poseen el mismo momento de
inercia (I)? - Responde con (Si/No)")
Dim ch = Console.ReadLine()
If ch = "No" Then
Console.WriteLine(vbCrLf + "Introduzca el momento de inercia de cada
tramo:")
For j = 0 To z
k = j + 1
Console.WriteLine($"{vbCrLf}Inercia (I) del tramo {k}:")
I(j) = Console.ReadLine()
Next
ElseIf ch = "Si" Then
Console.WriteLine(vbCrLf + "Introduzca el momento de inercia (I):")
k = Console.ReadLine()
For j = 0 To z
I(j) = k
Next
Else
Console.WriteLine(vbCrLf + "ERROR INTRODUCIDO. INTENTAR DE NUEVO.")
Console.ReadKey(True)
Exit Sub
End If
Console.WriteLine(vbCrLf + "Introduzca el M�dulo de Elasticidad del
material (E):")
E = Console.ReadLine()
Console.WriteLine(vbCrLf + "_______________________________________")
Console.WriteLine("DATOS SUMINISTRADOS DE LA ESTRUCTURA")
Console.WriteLine(vbCrLf + $"M�dulo de Elasticidad (E) = {E}")
For j = 0 To z
k = j + 1
Console.WriteLine($"{vbCrLf}TRAMO {k}:")
Console.WriteLine($"Luz (L) = {L(j)}")
Console.WriteLine($"Inercia (I) = {I(j)}")
Next
Console.WriteLine("_______________________________________" + vbCrLf)
'DATOS DE CARGA

Console.WriteLine("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:" + vbCrLf)
Console.WriteLine("DATOS DE CARGA")
Console.WriteLine(vbCrLf + "---------------")
Console.WriteLine(vbCrLf + "*** LEA E INGRESA LOS DATOS CON CIUDADO ***")
Console.WriteLine(vbCrLf + "Introduzca la cantidad total de cargas
existentes sobre los miembros:")
Dim NC = Console.ReadLine()
Dim p = NC - 1
Console.WriteLine(vbCrLf + "Introduzca los siguientes datos para cada carga
existente:")
Dim DC(p, 4) As Double
For j = 0 To p
k = j + 1
Console.WriteLine(vbCrLf + $"CARGA {k}" + vbCrLf)
Console.WriteLine($"N�mero del tramo sobre el cual act�a:")
DC(j, 0) = Console.ReadLine()
Console.WriteLine($"Tipo de Carga: (Responde 1 = Concentrada, 2 =
Distribuida Uniforme, 3 = Distribuida Uniforme Parcial, 4 = Triangular Descendente)
")
ch = Console.ReadLine()
DC(j, 1) = ch
If ch = 1 Then
Console.WriteLine("Ingresa el valor de la carga Concentrada (-
hacia arriba):")
DC(j, 2) = Console.ReadLine()
Console.WriteLine("Ingresa la distancia de la carga al apoyo
Izquierdo:")
DC(j, 3) = Console.ReadLine()
Console.WriteLine("Ingresa la distancia de la carga al apoyo
Derecho:")
DC(j, 4) = Console.ReadLine()
ElseIf ch = 2 Then
Console.WriteLine("Ingresa el valor de la carga Uniforme (- hacia
arriba):")
DC(j, 2) = Console.ReadLine()
ElseIf ch = 3 Then
Console.WriteLine("Ingresa el valor de la carga Uniforme Parcial(-
hacia arriba):")
DC(j, 2) = Console.ReadLine()
Console.WriteLine("Ingresa la distancia al apoyo Izquierdo de su
punto Inicial:")
DC(j, 3) = Console.ReadLine()
Console.WriteLine("Ingresa la distancia al apoyo Izquierdo de su
punto Final:")
DC(j, 4) = Console.ReadLine()
ElseIf ch = 4 Then
Console.WriteLine("Ingresa el valor de la carga Triangular
Descendente ( - hacia arriba):")
DC(j, 2) = Console.ReadLine()
Else
Console.WriteLine(vbCrLf + "ERROR INTRODUCIDO. INTENTAR DE NUEVO.")
Console.ReadKey(True)
Exit Sub
End If
Next
Console.WriteLine(vbCrLf + "_______________________________________")
Console.WriteLine("DATOS SUMINISTRADOS DE CARGA")
For j = 0 To p
k = j + 1
Console.WriteLine($"{vbCrLf}CARGA {k}:")
Console.WriteLine($"Tramo sobre el cual act�a = {DC(j, 0)}")
Console.WriteLine($"Tipo de carga (1 = Concent, 2 = Dist Uni, 3 = Dist
Uni Parcial, 4 = Tri Descend) = {DC(j, 1)}")
Console.WriteLine($"Valor de la carga = {DC(j, 2)}")
Next
Console.WriteLine("_______________________________________" + vbCrLf)
'DATOS DE LOS APOYOS

Console.WriteLine("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:" + vbCrLf)
Console.WriteLine("DATOS DE LOS APOYOS")
Console.WriteLine(vbCrLf + "----------------------------")
Console.WriteLine(vbCrLf + "Indique la condici�n del Apoyo Inicial. -
Responde E = Empotrado, S = Simple, V = Voladizo M = Momento Concentrado.")
Dim AI = Console.ReadLine()
Dim NTN, MI, MF As Double
If AI = "E" Then
NTN = NT + 1
ElseIf AI = "S" Then
NTN = NT
MI = 0
ElseIf AI = "V" Then
Console.WriteLine(vbCrLf + "Introduzca el momento del voladizo
izquierdo. (negativo si produce tensi�n en las fibras superiores de la viga)")
MI = Console.ReadLine()
NTN = NT
ElseIf AI = "M" Then
Console.WriteLine(vbCrLf + "Introduzca el momento concentrado
izquierdo. (negativo si es sentido contrario a las manecillas del reloj)")
MI = Console.ReadLine()
NTN = NT
Else
Console.WriteLine(vbCrLf + "ERROR INTRODUCIDO. INTENTAR TODO DE
NUEVO.")
Console.ReadKey(True)
Exit Sub
End If
Console.WriteLine(vbCrLf + "Indique la condici�n del Apoyo Final. -
Responde E = Empotrado, S = Simple, V = Voladizo M = Momento Concentrado.")
Dim AF = Console.ReadLine()
If AF = "E" Then
NTN = NTN + 1
ElseIf AF = "S" Then
MF = 0
ElseIf AF = "V" Then
Console.WriteLine(vbCrLf + "Introduzca el momento del voladizo derecho.
(negativo si produce tensi�n en las fibras superiores de la viga)")
MF = Console.ReadLine()
ElseIf AF = "M" Then
Console.WriteLine(vbCrLf + "Introduzca el momento concentrado derecho.
(positivo si es sentido contrario a las manecillas del reloj)")
MF = Console.ReadLine()
Else
Console.WriteLine(vbCrLf + "ERROR INTRODUCIDO. INTENTAR TODO DE
NUEVO.")
Console.ReadKey(True)
Exit Sub
End If
Console.WriteLine(vbCrLf + "_______________________________________")
Console.WriteLine("DATOS SUMINISTRADOS DE LOS APOYOS")
Console.WriteLine(vbCrLf + $"Condici�n del Apoyo Inicial = {AI}")
Console.WriteLine(vbCrLf + $"Condici�n del Apoyo Final = {AF}")
Console.WriteLine(vbCrLf + $"N�mero de Tramos despues de las condiciones de
los Apoyos = {NTN}")
Console.WriteLine("_______________________________________" + vbCrLf)
'DATOS DE ASENTAMIENTO

Console.WriteLine("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:" + vbCrLf)
Console.WriteLine("DATOS DE ASENTAMIENTO")
Console.WriteLine(vbCrLf + "----------------------------------")
Console.WriteLine(vbCrLf + "�Existe asentamiento en los apoyos?- Responde
con (Si/No)")
ch = Console.ReadLine()
Dim DA(NT) As Double
If ch = "Si" Then
Console.WriteLine(vbCrLf + "Introduzca el asentamiento de cada apoyo (+
hacia abajo):")
For j = 0 To NT
k = j + 1
Console.WriteLine(vbCrLf + $"Asentamiento del Apoyo {k}:")
DA(j) = Console.ReadLine()
Next
Console.WriteLine(vbCrLf + "_______________________________________")
Console.WriteLine("DATOS SUMINISTRADOS DE ASENTAMIENTO")
For j = 0 To NT
k = j + 1
Console.WriteLine(vbCrLf + $"Asentamiento del Apoyo {k} = {DA(j)}")
Next
Console.WriteLine("_______________________________________" + vbCrLf)
ElseIf ch = "No" Then
Console.WriteLine(vbCrLf + "_______________________________________")
Console.WriteLine("NO EXISTE ASENTAMIENTO EN LA VIGA.")
For j = 0 To NT
k = j + 1
Console.WriteLine(vbCrLf + $"Asentamiento del Apoyo {k} = {DA(j)}")
Next
Console.WriteLine("_______________________________________" + vbCrLf)
Else
Console.WriteLine(vbCrLf + "ERROR INTRODUCIDO. INTENTAR TODO DE
NUEVO.")
Console.ReadKey(True)
Exit Sub
End If
'SISTEMA DE ECUACIONES

Console.WriteLine("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:" + vbCrLf)
Console.WriteLine("FORMACION DE SISTEMA DE ECUACIONES")
Console.WriteLine(vbCrLf + "-------------------------------------")
Dim F(z) As Double
Dim M(NT), BS(NT) As Double
For j = 0 To z
F(j) = L(j) / (I(j))
Next
Dim s = NTN - 2
Dim A(s, s), B(s) As Double
'CALCULO DE LAS CARGAS
Dim C(p, 1) As Double 'c(j,0) = termino de carga izquierdo; c(j,1) =
termino de carga derecho
Dim IZ, DE, DI, DF As Double
For j = 0 To p
If DC(j, 1) = 1 Then
IZ = DC(j, 3)
DE = DC(j, 4)
k = DC(j, 0) - 1
C(j, 0) = -1 * DC(j, 2) * IZ * DE * (2 * IZ + DE) / (L(k) * I(k))
C(j, 1) = -1 * DC(j, 2) * IZ * DE * (IZ + 2 * DE) / (L(k) * I(k))
ElseIf DC(j, 1) = 2 Then
k = DC(j, 0) - 1
C(j, 0) = -1 * DC(j, 2) * ((L(k)) ^ 3) / (4 * I(k))
C(j, 1) = C(j, 0)
ElseIf DC(j, 1) = 3 Then
DI = DC(j, 3)
DF = DC(j, 4)
k = DC(j, 0) - 1
C(j, 0) = (DC(j, 2) / (-4 * L(k) * I(k))) * ((DF ^ 2) * (2 * (L(k)
^ 2) - DF ^ 2) - (DI ^ 2) * (2 * (L(k) ^ 2) - DI ^ 2))
C(j, 1) = (DC(j, 2) / (-4 * L(k) * I(k))) * (((L(k) - DI) ^ 2) * (2
* (L(k) ^ 2) - (L(k) - DI) ^ 2) - (((L(k) - DF)) ^ 2) * (2 * (L(k) ^ 2) - (L(k) -
DF) ^ 2))
ElseIf DC(j, 1) = 4 Then
k = DC(j, 0) - 1
C(j, 0) = (-7 / 60) * DC(j, 2) * ((L(k)) ^ 3) / (I(k))
C(j, 1) = (-2 / 15) * DC(j, 2) * ((L(k)) ^ 3) / (I(k))
End If
Next
'CALCULO DE ASENTAMIENTO
For j = 0 To NT
If j = 0 Then
BS(j) = 6 * E * (DA(j) - DA(j + 1)) / L(j)
ElseIf j = NT Then
BS(j) = 6 * E * (DA(j) - DA(j - 1)) / L(j - 1)
Else
BS(j) = 6 * E * (((DA(j) - DA(j - 1)) / L(j - 1)) + ((DA(j) - DA(j
+ 1)) / L(j)))
End If
Next
'MATRIZ A y B
If AI = "E" Then
A(0, 0) = 2 * F(0)
A(0, 1) = F(0)
If AF = "E" Then
For j = 1 To s - 1
k = j - 1
A(j, k) = F(k)
Next
For j = 1 To s - 1
k = j - 1
A(j, j) = 2 * (F(k) + F(j))
Next
For j = 1 To s - 1
k = j + 1
A(j, k) = F(j)
Next
A(s, s - 1) = F(z)
A(s, s) = 2 * F(z)
For x = 0 To z
For j = 0 To p
If DC(j, 0) = x + 1 Then
B(x) = B(x) + C(j, 1)
B(x + 1) = B(x + 1) + C(j, 0)
End If
Next
Next
For x = 0 To s
B(x) = B(x) + BS(x)
Next
ElseIf AF <> "E" Then
For j = 1 To s
k = j - 1
A(j, k) = F(k)
Next
For j = 1 To s
k = j - 1
A(j, j) = 2 * (F(k) + F(j))
Next
For j = 1 To s - 1
k = j + 1
A(j, k) = F(j)
Next
M(NT) = MF
For x = 0 To z
For j = 0 To p
If DC(j, 0) = x + 1 Then
B(x) = B(x) + C(j, 1)
If x <> z Then
B(x + 1) = B(x + 1) + C(j, 0)
End If
End If
Next
Next
For x = 0 To s
B(x) = B(x) + BS(x)
Next
B(s) = B(s) - M(NT) * L(z)
End If
ElseIf AF = "E" Then
M(0) = MI
For j = 0 To s - 1
A(j, j) = 2 * (F(j) + F(j + 1))
Next
For j = 1 To s - 1
k = j - 1
A(j, k) = F(j)
Next
For j = 0 To s - 1
k = j + 1
A(j, k) = F(k)
Next
A(s, s - 1) = F(z)
A(s, s) = 2 * F(z)
For x = 0 To z
For j = 0 To p
If DC(j, 0) = x + 1 Then
B(x) = B(x) + C(j, 0)
If x <> 0 Then
B(x - 1) = B(x - 1) + C(j, 1)
End If
End If
Next
Next
For x = 0 To s
B(x) = B(x) + BS(x + 1)
Next
B(0) = B(0) - M(0) * L(0)
Else
M(0) = MI
M(NT) = MF
For j = 0 To s
A(j, j) = 2 * (F(j) + F(j + 1))
Next
For j = 1 To s
k = j - 1
A(j, k) = F(j)
Next
For j = 0 To s - 1
k = j + 1
A(j, k) = F(k)
Next
For x = 0 To z
For j = 0 To p
If DC(j, 0) = x + 1 Then
If x <> z Then
B(x) = B(x) + C(j, 0)
End If
If x <> 0 Then
B(x - 1) = B(x - 1) + C(j, 1)
End If
End If
Next
Next
For x = 0 To s
B(x) = B(x) + BS(x + 1)
Next
B(0) = B(0) - M(0) * L(0)
B(s) = B(s) - M(NT) * L(z)
End If
Console.WriteLine(vbCrLf + "_______________________________________")
Console.WriteLine("DATOS SUMINISTRADOS DE LA MATRIZ A")
For j = 0 To s
Console.WriteLine(vbCrLf + $"Columna {j}:")
For k = 0 To s
Console.WriteLine(A(k, j))
Next
Next
Console.WriteLine(vbCrLf + "_______________________________________")
Console.WriteLine("DATOS SUMINISTRADOS DE LA MATRIZ B" + vbCrLf)
For k = 0 To s
Console.WriteLine(B(k))
Next
Console.WriteLine("_______________________________________" + vbCrLf)
For k = 0 To NT
Console.WriteLine(BS(k))
Next
Console.WriteLine("_______________________________________" + vbCrLf)
For k = 0 To p
Console.WriteLine($"{C(k, 0)}, {C(k, 1)}")
Next
Console.ReadKey(True)
End Sub
End Module

También podría gustarte