elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ayuda con Select Case VBS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Select Case VBS  (Leído 3,156 veces)
Wartherion

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con Select Case VBS
« en: 9 Junio 2015, 01:55 am »

Hola Necesito una ayuda con el sigueinte script.

Código
  1. Dim  x,y,n,m,r,nu,n1,n2,n3,n4,n5,m1,m2,m3,m4,m5,result
  2.  
  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")
  4.  
  5. select case num
  6.  
  7. case "1"
  8. x=inputbox("Ingrese el valor de X")
  9.  
  10. x=cint(x)
  11. y=log(x+30) / 20
  12. msgbox("El Valor de Y es: " & y )
  13.  
  14.  
  15. case "2"
  16.  
  17. m1=inputbox("Nombre de la 1°materia")
  18. nu1=inputbox(" Nota de " & m1)
  19.  
  20. if nu1>100 then
  21. msgbox "Ingrese un valor entre 0 - 100", vbAbort, "Erro de Validacion"
  22. else
  23. nu=msgbox("Desea Salir")
  24. end if
  25.  
  26. m2=inputbox("Nombre de la 2°materia")
  27. nu2=inputbox(" Nota de " & m2 )
  28.  
  29. if nu2>100 then
  30. msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
  31. else
  32. msgbox("Usted esta saliendo del Programa")
  33. end if
  34.  
  35. m3=inputbox("Nombre de la 3°materia")
  36. nu3=inputbox(" Nota de " & m3 )
  37.  
  38. if nu3>100 then
  39. msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
  40. else
  41. msgbox("Usted esta saliendo del Programa")
  42. end if
  43.  
  44. m4=inputbox("Nombre de la 4°materia")
  45. nu4=inputbox(" Nota de " & m4 )
  46.  
  47. if nu4>100 then
  48. msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
  49. else
  50. msgbox("Usted esta saliendo del Programa")
  51. end if
  52.  
  53. m5=inputbox("Nombre de la 5°materia")
  54. nu5=inputbox(" Nota de " & m5 )
  55.  
  56. if nu5>100 then
  57. msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
  58. else
  59. msgbox("Usted esta saliendo del Programa")
  60. end if
  61.  
  62.  
  63. nu1=cint(nu1)
  64. nu2=cint(nu2)
  65. nu3=cint(nu3)
  66. nu4=cint(nu4)
  67. nu5=cint(nu5)
  68. nu=nu1+nu2+nu3+nu4+nu5
  69. result=nu/5
  70. if result>100 then
  71. msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
  72. else
  73. msgbox("Usted esta saliendo del Programa")
  74. end if
  75. msgbox("El promedio es: " & result )
  76.  
  77. re="Reprobado"
  78. de="Deficiente"
  79. bu="Bueno"
  80. mbu="Muy Bueno"
  81. exc="Exelente"
  82.  
  83. if result<=59 then
  84. msgbox("El Alumno esta: "  & re )
  85. else
  86. if result>=60 and result<=69 then
  87. msgbox("El alumno esta: " & de )
  88. else
  89. if result>=70 and result<=79 then
  90. msgbox("El Alumno esta: " & bu )
  91. else
  92. if result>=80 and result<=89 then
  93. msgbox("El Alumno esta: " & mbu )
  94. else
  95. if result>=90 and result <= 100 then
  96. msgbox("El Alumno esta: " & exc )
  97. end if
  98. end if
  99. end if
  100. end if
  101. end if
  102.  
  103.  
  104. if nu1<59 then
  105. msgbox("El Alumno Reprobo " & m1)
  106. else
  107. msgbox("El Alumno Aprobo " & m1)
  108. end if
  109.  
  110. if nu2<59 then
  111. msgbox("El Alumno Reprobo " & m2)
  112. else
  113. msgbox("El Alumno Aprobo " & m2)
  114. end if
  115.  
  116. if nu3<59 then
  117. msgbox("El Alumno Reprobo " & m3)
  118. else
  119. msgbox("El Alumno Aprobo " & m3)
  120. end if
  121.  
  122. if nu4<59 then
  123. msgbox("El Alumno Reprobo " & m4)
  124. else
  125. msgbox("El Alumno Aprobo " & m4)
  126. end if
  127.  
  128. if nu5<59 then
  129. msgbox("El Alumno Reprobo " & m5)
  130. else
  131. msgbox("El Alumno Aprobo " & m5)
  132. end if
  133.  
  134.  
  135. case "3"
  136.  
  137.  
  138. msgbox"Usted esta saliendo del Programa", vbexclamation
  139.  
  140. 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 Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Ayuda con Select Case VBS
« Respuesta #1 en: 9 Junio 2015, 02:06 am »

- Utiliza las etiquetas GeSHi para publicar código!

Salu2s


En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Ayuda con Select Case VBS
« Respuesta #2 en: 9 Junio 2015, 06:36 am »

lo haría así, espero que te oriente, aunque seguro hay muchas formas mejores!!! y por supuesto te toca terminar lo que falte.
Código
  1. Dim  x,y,n,m,r,nu,n1,n2,n3,n4,n5,m1,m2,m3,m4,m5,result
  2.  
  3. sub trabajos()
  4.  
  5. Do while num <> 3
  6. num=inputbox("Digente el Numero de la Operacion que Desea Realizar:                                                                                                                                                  1. Encontrar el valor de Y                                      2. Promedio de un Estudiante                                 3. Salir")
  7.  
  8.  
  9. if num = 1 then
  10. x=inputbox("Ingrese el valor de X")
  11. msgbox "El Valor de Y es: " & Valor(x)
  12. end if
  13.  
  14. if num = 2 then
  15. promedio()
  16. end if
  17. loop
  18.  
  19. msgbox"Terminado!"
  20. end sub
  21.  
  22. function Valor(nota)
  23. Valor=log(cint(x)+30/20)
  24. end function
  25.  
  26. function Promedio()
  27. m1=inputbox("Nombre de la 1°materia")
  28. nu1=inputbox(" Nota de " & m1)
  29. if nu1>100 then
  30. msgbox "Ingrese un valor entre 0 - 100", vbOKOnly, "Error de Validacion"
  31. exit function
  32. end if
  33.  
  34. m2=inputbox("Nombre de la 2°materia")
  35. nu2=inputbox(" Nota de " & m2 )
  36. if nu2>100 then
  37. msgbox "Ingrese un valor entre 0 - 100", vbexclamation, "Erro de Validacion"
  38. exit function
  39. end if
  40.  
  41. nu=cint(nu1)+ cint(nu2) + cint(nu3) + cint(nu4) + cint(nu5)
  42. msgbox "el promedio es: " & nu/5
  43. end function
  44.  
  45. trabajos()
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Ayuda con Select Case VBS
« Respuesta #3 en: 9 Junio 2015, 10:40 am »

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:
Citar
Código
  1. if result<=59 then
  2. msgbox("El Alumno esta: "  & re )
  3. else
  4. if result>=60 and result<=69 then
  5. msgbox("El alumno esta: " & de )
  6. else
  7. if result>=70 and result<=79 then
  8. msgbox("El Alumno esta: " & bu )
  9. else
  10. if result>=80 and result<=89 then
  11. msgbox("El Alumno esta: " & mbu )
  12. else
  13. if result>=90 and result <= 100 then
  14. msgbox("El Alumno esta: " & exc )
  15. end if
  16. end if
  17. end if
  18. end if
  19. 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:

Código
  1. Option Explicit : Dim appTitle, boxMsg, result
  2.  
  3. ' ***************************************************************
  4. '                           Main
  5. ' ***************************************************************
  6.  
  7. appTitle = "Título del programa."
  8.  
  9. boxMsg   = "Introduzca el numero de la operacion a realizar:" & _
  10.           vbNewLine & _
  11.           vbNewLine & _
  12.           "1. Encontrar el valor de Y" & _
  13.           vbNewLine & _
  14.           "2. Promedio de un Estudiante" & _
  15.           vbNewLine & _
  16.           "3. Salir"
  17.  
  18. Do While ( result <> 3 )
  19.  
  20.    result = Cint( InputBox(boxMsg, appTitle) )
  21.  
  22.    Select Case result
  23.  
  24.        Case 1 ' Encontrar el valor de Y
  25.            EncontrarElValorDeY()
  26.  
  27.        Case 2 ' Promedio de un Estudiante
  28.            PromedioDeUnEstudiante()
  29.  
  30.        Case 3 ' Salir
  31.            Salir()
  32.  
  33.    End Select
  34.  
  35. Loop
  36.  
  37. ' ***************************************************************
  38. '                           Methods
  39. ' ***************************************************************
  40.  
  41. ' Encontrar el valor de Y
  42. Sub EncontrarElValorDeY()
  43.    Dim x, y
  44.    x = CDbl( InputBox("Introduzca el valor de 'X'.", appTitle) )
  45.    y = GetValue(x)
  46.    Call MsgBox("El Valor de 'Y' es: " & CStr(y), vbInformation, appTitle)
  47. End Sub
  48.  
  49. ' Promedio de un Estudiante
  50. Sub PromedioDeUnEstudiante()
  51.    Dim matters, notes, average, _
  52.        sentences, curSentence,  _
  53.        index, alumnInfo
  54.  
  55.    matters = Array(Null, Null, Null, Null, Null)
  56.    notes   = Array(Null, Null, Null, Null, Null)
  57.    average = Null
  58.  
  59.    sentences   = Array("Reprobado", "Deficiente", "Bueno", "Muy Bueno", "Excelente")
  60.    curSentence = Null
  61.    alumnInfo   = Null
  62.  
  63.    For index = 0 To UBound(matters)
  64.        matters(index) = InputBox("Nombre de la" & CStr(index + 1) & "° materia", appTitle)
  65.  
  66.        Do Until ( notes(index) <= 100 )
  67.            notes(index) = CInt( InputBox("Nota de '" & matters(index) & "' (entre 0 y 100)", appTitle) )
  68.        Loop
  69.    Next
  70.  
  71.    average = GetAverage(notes)
  72.  
  73.    If (average <= 59) Then
  74.        curSentence = sentences(0)
  75.  
  76.    ElseIf (average >= 60) And (average <= 69) Then
  77.        curSentence = sentences(1)
  78.  
  79.    ElseIf (average >= 70) And (average <= 79) Then
  80.        curSentence = sentences(2)
  81.  
  82.    ElseIf (average >= 80) And (average <= 89) Then
  83.        curSentence = sentences(3)
  84.  
  85.    Else ' average >= 90
  86.        curSentence = sentences(4)
  87.  
  88.    End If
  89.  
  90.    alumnInfo = alumnInfo & "El promedio es: "  & CStr(average) & vbNewLine
  91.    alumnInfo = alumnInfo & "El alumno esta: "  & curSentence & vbNewLine
  92.  
  93.    For index = 0 To UBound(notes)
  94.  
  95.        If notes(index) <= 59 Then
  96.            alumnInfo = alumnInfo & "El alumno reprobo " & matters(index) & vbNewLine
  97.  
  98.        Else
  99.            alumnInfo = alumnInfo & "El alumno aprobo " & matters(index) & vbNewLine
  100.  
  101.        End If
  102.  
  103.    Next
  104.  
  105.    Call MsgBox(alumnInfo, vbInformation, appTitle)
  106. End Sub
  107.  
  108. ' Salir
  109. Sub Salir()
  110.    Call MsgBox("Usted esta saliendo del programa...", vbExclamation, appTitle)
  111.    WScript.Quit(0)
  112. End Sub
  113.  
  114. ' ***************************************************************
  115. '                           Functions
  116. ' ***************************************************************
  117.  
  118. ' valor de X
  119. Function GetValue(value)
  120.    GetValue = CDbl( Log(value + 30) / 20 )
  121. End Function
  122.  
  123. ' Promedio de X
  124. Function GetAverage(values)
  125.    Dim value
  126.  
  127.    For Each value In values
  128.        GetAverage = GetAverage + value
  129.    Next
  130.  
  131.    GetAverage = CDbl( GetAverage / 5 )
  132. End Function

Saludos!
« Última modificación: 9 Junio 2015, 10:47 am por Eleкtro » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Ayuda con Select Case VBS
« Respuesta #4 en: 12 Junio 2015, 10:20 am »

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 Desconectado

Mensajes: 9.817



Ver Perfil
Re: Ayuda con Select Case VBS
« Respuesta #5 en: 12 Junio 2015, 11:28 am »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con Select Case
Programación Visual Basic
Scratz 6 3,003 Último mensaje 17 Diciembre 2007, 00:04 am
por Scratz
Problemas con SELECT CASE « 1 2 »
Programación Visual Basic
stork32 13 6,940 Último mensaje 12 Octubre 2008, 13:17 pm
por Spider-Net
select case sql, enviar form
PHP
alexkof158 5 5,916 Último mensaje 28 Febrero 2010, 23:34 pm
por mokoMonster
[DUDA] Select Case
Programación Visual Basic
Zodiak98 2 2,000 Último mensaje 21 Mayo 2013, 13:24 pm
por 79137913
Como Puedo Poner Notas En Select Case ?
Programación Visual Basic
R3Z 2 1,781 Último mensaje 14 Julio 2015, 16:11 pm
por 79137913
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines