Visual Basic.NET - [AYUDA] ¿Varias condiciones en un Do While?

 
Vista:
sin imagen de perfil

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Emanuel (25 intervenciones) el 04/07/2016 01:12:31
Hola! Ya tenía ganas de volver a este foro


Tengo este enunciado:

"Ingresar para 5 alumnos las notas mayores a 6, y menores a 10"


Mi problema es hacer el argumento del Do While, es decir, para VALIDAR AL VECTOR nota(5), pero de todas formas hice ésto:
1
2
3
4
5
6
Dim nota(5) As Double ' Las notas pueden ser decimales
For i = 1 To 5
            Do While nota(i) <= 6 And nota(i) >= 10
                nota(i) = Val(InputBox("Ingrese la nota Nº " & i))
            Loop
Next


Al tratar de realizarlo, me surgen 2 problemas:

1) No me entra directamente adentro del Do While

2) Si le sacara alguna de las 2 condiciones (por ejemplo,
1
And nota(i) >= 10
), e ingreso en el InputBox el valor "9hola", ME LO DEJA PASAR

Es el único error que le encuentro, porque si ingreso:
· 5: me vuelve a mostrar el InputBox;

· hola: me vuelve a mostrar el InputBox;

· hola9: me vuelve a mostrar el InputBox;


· Pero si ingreso 15nota, me lo permite, y por ende, entra (puse un MsgBox antes de terminar el ciclo For y sólo me toma el 15, pero no debe ser así =/)



Nunca intenté probar con 2 condiciones (nota(i) <= 6 And nota(i) >= 10); ahora sé que no se puede jajja.


¿Alguno tiene solución para

1) Meter más de una condición en un Do While (o Do Until)

2) Validar los datos estrictamente bien?



GRACIAS !!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 45
Ha disminuido su posición en 7 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por xve (100 intervenciones) el 04/07/2016 09:10:11
Hola Emanuel, no soy un experto en .NET... pero creo entender tu problema.

1.- No me entra directamente adentro del Do While
En la primera iteración, nota(0) no tiene valor por eso no te entra en el bucle...
Prueba a definir primero el valor 0 a los 5 valores del array


Sobre tu segunda consulta, al tener un valor nota(i) aunque sea "hola", lo interpreta como el valor 0, ya que la variable nota esta definida como un Double... por eso no sales del bucle.


Espero que te haya ayudado un poco...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Santiago
Val: 17
Ha disminuido su posición en 72 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Santiago (27 intervenciones) el 04/07/2016 13:39:46
Hola:

No he podido hacer pruebas porque no tengo aquí el entorno de programación, pero (de memoria)

Do While nota(i) <= 6 And nota(i) >= 10
nota(i) = Val(InputBox("Ingrese la nota Nº " & i))
Loop

En el Do le estás pidiendo que la nota sea <=6 Y mayor=10. Ambas cosas a la vez es imposible.

Por otro lado, si quieres que entre la primera vez, evalúa el Do al final

Prueba esto:

Do
nota(i) = Val(InputBox("Ingrese la nota Nº " & i))
Loop While nota(i) <= 6 Or nota(i) >= 10

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Emanuel (25 intervenciones) el 04/07/2016 16:39:13
Mirá, con respecto al Or era así !!
Lo que sí probé es dejarlo en el mismo lugar (luego del Do), y funciona de la misma manera que si lo pongo antes que termine el ciclo.


Lo que me sigue fallando es el tema de validar los datos:

ayuda

Si ingreso, como en la imagen, el texto 8SoyUnOcho, me lo toma como 8 -> ESTÁ MAL (de manera contraria, si ingreso, otro ejemplo, 5NoSoyUn8, me toma 5 -> ESTÁ BIEN, no me lo deja pasar y me sigue en la posición 1 del vector)



Entonces sólo quedaría ver por qué solamente toma el 1er caracter de Prompt
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 04/07/2016 17:47:49
No he revisado con detenimiento tu problema, pero si te piden ingresar notas mayores a 6 y menores a 10, entonces tus condiciones están mal, tendría que ser >=6 y <=10 y no al revés.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Santiago
Val: 17
Ha disminuido su posición en 72 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Santiago (27 intervenciones) el 04/07/2016 19:02:46
Hola:

Estás usando Val(InputBox(...)) Esta función trata de formatear como número el texto que le indiques.
- Primero coge el texto del Inputbox (8SoyUnOcho) trata de pasarlo a numérico y lo tranforma como 8. Al estar entre 6 y 10 se sale del bucle.
- Luego coge el segundo valor (5NoSoyUnOcho) trata de pasarlo a numérico y lo tranforma como 5. Al no estar entre 6 y 10 NO se sale del bucle.

Todo es correcto. Yo recogería el valor en una variable String y validaría si es un número con IsNumeric():

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim nota(5) As Double ' Las notas pueden ser decimales
Dim strValor As String
For i = 1 To 5
            Do While nota(i) <= 6 Or nota(i) >= 10
                strValor = Val(InputBox("Ingrese la nota Nº " & i))
                If IsNumeric(strValor) Then
                  nota(i) = Val(strValor)
                Else
                  MsgBox ("Por favor, teclee un número")
                  nota(i) = 0 ' Para que no salga del bucle
                End If
                MsgBox (nota(i))
            Loop
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Emanuel (25 intervenciones) el 06/07/2016 00:17:52
Hola de vuelta!

Mirá, probé con lo que me pusiste, y lo entiendo; sin embargo, como soy exigente jaja, no está estrictamente validado el vector nota.


Insisto con lo mismo: si yo ingreso en el InputBox:

· g8: NO PASA (correcto);
· 8g: PASA (incorrecto).

Adjunto lo que me sale (con los valores para Nota 1 = "g8"; Nota 2 = "8g"):


ayuda


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Santiago
Val: 17
Ha disminuido su posición en 72 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Santiago (27 intervenciones) el 06/07/2016 18:21:07
Hola:

No sé si entiendo lo que quieres. Dijiste en un mensaje anterior " ... si ingreso, otro ejemplo, 5NoSoyUn8, me toma 5 -> ESTÁ BIEN,".

Si lo que quieres es que valide que el texto introducido sea un número y no contenga caracteres:

1
2
3
4
5
6
7
8
9
10
11
12
13
For i = 1 To 5
	Do While nota(i) <= 6 Or nota(i) >= 10
		strValor = InputBox("Ingrese la nota Nº " & i)
		Try
			Dim dblValor As Double
			dblValor = CDbl(strValor)
			nota(i) = dblValor
		Catch ex As Exception
			MsgBox("No es un dato numérico")
		End Try
		MsgBox(nota(i))
	Loop
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Emanuel (25 intervenciones) el 06/07/2016 21:58:37
Ahí funciona!

He visto en videos la instrucción Try pero todavía no la aplicamos al curso. No me había dado cuenta que la solución podía pasar por ahí
Lo que sí cambié es la declaración de la variable dblValor; lo puse en el ámbito de la Clase, ya que me comentaron (y lo creo así) que si declaro algo dentro de un evento (en este caso Click de un Button), la puedo utilizar únicamente en ese ámbito; pero repito, es un modo de programación en VB, lo probé tanto como me lo pusiste como arriba de todo, y funciona de la misma manera.


Gracias por la paciencia!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

[AYUDA] ¿Varias condiciones en un Do While?

Publicado por Rolando (3 intervenciones) el 22/07/2016 20:22:15
Los signos de comparación están al revés debe de decir > a 6 y < a 10 , ve esto


Rolando

analista programador
Antofagasta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar