Hola Necesito una ayuda con el sigueinte script.
Dim x,y,n,m,r,nu,n1,n2,n3,n4,n5,m1,m2,m3,m4,m5,result
num=inputbox("Digente el Numero de la Operacion que Desea Realizar: 1. Encontrar el valor de Y 2. Promedio de un Estudiante 3. Salir")
select case num
case "1"
x=inputbox("Ingrese el valor de X")
x=cint(x)
y=log(x+30) / 20
msgbox("El Valor de Y es: " & y )
case "2"
m1=inputbox("Nombre de la 1°materia")
nu1=inputbox(" Nota de " & m1)
if nu1>100 then
msgbox "Ingrese un valor entre 0 - 100", vbAbort, "Erro de Validacion"
else
nu=msgbox("Desea Salir")
end if
m2=inputbox("Nombre de la 2°materia")
nu2=inputbox(" Nota de " & m2 )
if nu2>100 then
msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
else
msgbox("Usted esta saliendo del Programa")
end if
m3=inputbox("Nombre de la 3°materia")
nu3=inputbox(" Nota de " & m3 )
if nu3>100 then
msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
else
msgbox("Usted esta saliendo del Programa")
end if
m4=inputbox("Nombre de la 4°materia")
nu4=inputbox(" Nota de " & m4 )
if nu4>100 then
msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
else
msgbox("Usted esta saliendo del Programa")
end if
m5=inputbox("Nombre de la 5°materia")
nu5=inputbox(" Nota de " & m5 )
if nu5>100 then
msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
else
msgbox("Usted esta saliendo del Programa")
end if
nu1=cint(nu1)
nu2=cint(nu2)
nu3=cint(nu3)
nu4=cint(nu4)
nu5=cint(nu5)
nu=nu1+nu2+nu3+nu4+nu5
result=nu/5
if result>100 then
msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
else
msgbox("Usted esta saliendo del Programa")
end if
msgbox("El promedio es: " & result )
re="Reprobado"
de="Deficiente"
bu="Bueno"
mbu="Muy Bueno"
exc="Exelente"
if result<=59 then
msgbox("El Alumno esta: " & re )
else
if result>=60 and result<=69 then
msgbox("El alumno esta: " & de )
else
if result>=70 and result<=79 then
msgbox("El Alumno esta: " & bu )
else
if result>=80 and result<=89 then
msgbox("El Alumno esta: " & mbu )
else
if result>=90 and result <= 100 then
msgbox("El Alumno esta: " & exc )
end if
end if
end if
end if
end if
if nu1<59 then
msgbox("El Alumno Reprobo " & m1)
else
msgbox("El Alumno Aprobo " & m1)
end if
if nu2<59 then
msgbox("El Alumno Reprobo " & m2)
else
msgbox("El Alumno Aprobo " & m2)
end if
if nu3<59 then
msgbox("El Alumno Reprobo " & m3)
else
msgbox("El Alumno Aprobo " & m3)
end if
if nu4<59 then
msgbox("El Alumno Reprobo " & m4)
else
msgbox("El Alumno Aprobo " & m4)
end if
if nu5<59 then
msgbox("El Alumno Reprobo " & m5)
else
msgbox("El Alumno Aprobo " & m5)
end if
case "3"
msgbox"Usted esta saliendo del Programa", vbexclamation
end select
Quiero que haga lo sigueinte:
1. Cuando se ingrese una Nota con Valor Mayor a 100 El programa mande una alvertencia de que la nota es Invalida y ya no continue, con el ingreso de la siguiente nota y a si sucesivamente.
Agradecesiria que me indicaran el error en el codigo del case 2 que es para calcular el promedio de 5 notas, para poder solucionarlo.
Gracias.
Mod: Los códigos deben ir en etiquetas GeSHi
- Utiliza las etiquetas GeSHi para publicar código!
Salu2s
lo haría así, espero que te oriente, aunque seguro hay muchas formas mejores!!! y por supuesto te toca terminar lo que falte.
Dim x,y,n,m,r,nu,n1,n2,n3,n4,n5,m1,m2,m3,m4,m5,result
sub trabajos()
Do while num <> 3
num=inputbox("Digente el Numero de la Operacion que Desea Realizar: 1. Encontrar el valor de Y 2. Promedio de un Estudiante 3. Salir")
if num = 1 then
x=inputbox("Ingrese el valor de X")
msgbox "El Valor de Y es: " & Valor(x)
end if
if num = 2 then
promedio()
end if
loop
msgbox"Terminado!"
end sub
function Valor(nota)
Valor=log(cint(x)+30/20)
end function
function Promedio()
m1=inputbox("Nombre de la 1°materia")
nu1=inputbox(" Nota de " & m1)
if nu1>100 then
msgbox "Ingrese un valor entre 0 - 100", vbOKOnly, "Error de Validacion"
exit function
end if
m2=inputbox("Nombre de la 2°materia")
nu2=inputbox(" Nota de " & m2 )
if nu2>100 then
msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
exit function
end if
nu=cint(nu1)+ cint(nu2) + cint(nu3) + cint(nu4) + cint(nu5)
msgbox "el promedio es: " & nu/5
end function
trabajos()
Ni siquiera utilizas la indentación para que el código sea minimamente legible para ti y para los demás,
MUY MAL, te lo digo seriamente, la indentación es una cosa muy importante,
aprende a usarla, por que la mayoría de personas que vean ese código ni siquiera se van a molestar en leerlo/analizarlo.
Esto es simplemente horrible de ver:
Citarif result<=59 then
msgbox("El Alumno esta: " & re )
else
if result>=60 and result<=69 then
msgbox("El alumno esta: " & de )
else
if result>=70 and result<=79 then
msgbox("El Alumno esta: " & bu )
else
if result>=80 and result<=89 then
msgbox("El Alumno esta: " & mbu )
else
if result>=90 and result <= 100 then
msgbox("El Alumno esta: " & exc )
end if
end if
end if
end if
end if
Aparte, una cosa importante que también deberías tener en cuenta es que no es necesario anidar las condicionales (en este caso), ya que puedes usar la sentencia
ElseIf.
También deberías hacer uso de las características que el lenguaje te proporciona, cómo
Arrays,
ElseIf, y funciones built-in, aparte, deberías estructurar el código para trasladar la lógica que has escrito en el bloque del select case, a métodos/funciones adicionales.
Aquí te dejo un código funcional:
Option Explicit : Dim appTitle, boxMsg, result
' ***************************************************************
' Main
' ***************************************************************
appTitle = "Título del programa."
boxMsg = "Introduzca el numero de la operacion a realizar:" & _
vbNewLine & _
vbNewLine & _
"1. Encontrar el valor de Y" & _
vbNewLine & _
"2. Promedio de un Estudiante" & _
vbNewLine & _
"3. Salir"
Do While ( result <> 3 )
result = Cint( InputBox(boxMsg, appTitle) )
Select Case result
Case 1 ' Encontrar el valor de Y
EncontrarElValorDeY()
Case 2 ' Promedio de un Estudiante
PromedioDeUnEstudiante()
Case 3 ' Salir
Salir()
End Select
Loop
' ***************************************************************
' Methods
' ***************************************************************
' Encontrar el valor de Y
Sub EncontrarElValorDeY()
Dim x, y
x = CDbl( InputBox("Introduzca el valor de 'X'.", appTitle) )
y = GetValue(x)
Call MsgBox("El Valor de 'Y' es: " & CStr(y), vbInformation, appTitle)
End Sub
' Promedio de un Estudiante
Sub PromedioDeUnEstudiante()
Dim matters, notes, average, _
sentences, curSentence, _
index, alumnInfo
matters = Array(Null, Null, Null, Null, Null)
notes = Array(Null, Null, Null, Null, Null)
average = Null
sentences = Array("Reprobado", "Deficiente", "Bueno", "Muy Bueno", "Excelente")
curSentence = Null
alumnInfo = Null
For index = 0 To UBound(matters)
matters(index) = InputBox("Nombre de la" & CStr(index + 1) & "° materia", appTitle)
Do Until ( notes(index) <= 100 )
notes(index) = CInt( InputBox("Nota de '" & matters(index) & "' (entre 0 y 100)", appTitle) )
Loop
Next
average = GetAverage(notes)
If (average <= 59) Then
curSentence = sentences(0)
ElseIf (average >= 60) And (average <= 69) Then
curSentence = sentences(1)
ElseIf (average >= 70) And (average <= 79) Then
curSentence = sentences(2)
ElseIf (average >= 80) And (average <= 89) Then
curSentence = sentences(3)
Else ' average >= 90
curSentence = sentences(4)
End If
alumnInfo = alumnInfo & "El promedio es: " & CStr(average) & vbNewLine
alumnInfo = alumnInfo & "El alumno esta: " & curSentence & vbNewLine
For index = 0 To UBound(notes)
If notes(index) <= 59 Then
alumnInfo = alumnInfo & "El alumno reprobo " & matters(index) & vbNewLine
Else
alumnInfo = alumnInfo & "El alumno aprobo " & matters(index) & vbNewLine
End If
Next
Call MsgBox(alumnInfo, vbInformation, appTitle)
End Sub
' Salir
Sub Salir()
Call MsgBox("Usted esta saliendo del programa...", vbExclamation, appTitle)
WScript.Quit(0)
End Sub
' ***************************************************************
' Functions
' ***************************************************************
' valor de X
Function GetValue(value)
GetValue = CDbl( Log(value + 30) / 20 )
End Function
' Promedio de X
Function GetAverage(values)
Dim value
For Each value In values
GetAverage = GetAverage + value
Next
GetAverage = CDbl( GetAverage / 5 )
End Function
Saludos!
Elektro le hiciste toda la tarea! Espero que te mencione en los créditos por lo menos. Es increible como piden ayuda, y no dan las gracias ni por casualidad!
Cita de: tincopasan en 12 Junio 2015, 10:20 AMEs increible como piden ayuda, y no dan las gracias ni por casualidad!
Suele pasar...
Pero bueno, a esto es a lo que nos arriesgamos la mayoría de las veces al ayudar desinteresadamente, podemos acabar haciendo el trabajo de otra persona sin tan siquiera recibir un humilde
GRACIAS por el esfuerzo que hayamos invertido.
...¿Créditos?, las personas que ni siquiera se paran a agradecer, mucho menos van a ser capaces de reconocer que su código/trabajo lo ha hecho otra persona o que al menos les han ayudado a hacerlo, aunque personalmente el reconocimiento me da igual, yo me conformo con un gesto amable de agradecimiento, la misma amabilidad que nosotros solemos tener cuando ayudamos a los demás sin esperar recibir nada a cambio, pero siempre sienta bien que al menos te agradezcan la ayuda que les has ofrecido.
Generalizando, ese tipo de personas luego volverán por que no son capaces de explicar o entender ni la mitad del código que le hemos dado, y ahí ya se darán cuenta ellos solitos de los favores que han perdido por ser tan desconsiderados con las personas que estuvieron dispuestas a ayudarle.
En fín, a mi también me indigna un poquito, pero que le vamos a hacer.
PD: Tampoco es que este sea un caso extremo ...es un código sin complejidad, en un lenguaje sencillo y apenas 100 lineas de códigio.
Saludos!