Autor
|
Tema: Ayuda con Select Case VBS (Leído 3,475 veces)
|
Wartherion
Desconectado
Mensajes: 1
|
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
|
|
« Última modificación: 9 Junio 2015, 06:45 am por engel lex »
|
En línea
|
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
- Utiliza las etiquetas GeSHi para publicar código!
Salu2s
|
|
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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()
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
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: 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
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!
|
|
« Última modificación: 9 Junio 2015, 10:47 am por Eleкtro »
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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!
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Es 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!
|
|
« Última modificación: 12 Junio 2015, 11:42 am por Eleкtro »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda con Select Case
Programación Visual Basic
|
Scratz
|
6
|
3,262
|
17 Diciembre 2007, 00:04 am
por Scratz
|
|
|
Problemas con SELECT CASE
« 1 2 »
Programación Visual Basic
|
stork32
|
13
|
7,429
|
12 Octubre 2008, 13:17 pm
por Spider-Net
|
|
|
select case sql, enviar form
PHP
|
alexkof158
|
5
|
6,217
|
28 Febrero 2010, 23:34 pm
por mokoMonster
|
|
|
[DUDA] Select Case
Programación Visual Basic
|
Zodiak98
|
2
|
2,257
|
21 Mayo 2013, 13:24 pm
por 79137913
|
|
|
Como Puedo Poner Notas En Select Case ?
Programación Visual Basic
|
R3Z
|
2
|
2,070
|
14 Julio 2015, 16:11 pm
por 79137913
|
|