Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: MicroHack en 17 Enero 2011, 19:02 pm



Título: Programa Quiniela Deportiva
Publicado por: MicroHack en 17 Enero 2011, 19:02 pm
Hola,

estoy aprendiendo vb.net y tengo que realizar un ejercicio usando arrays en el cual se solicita al usuario los resultados de un evento.

El programa funciona correctamente, solo que ahora quiero limitar y controlar el "valor" que el usuario introduce para que no sea diferente de "1", "X" o "2"

Para ello he querido usar un While, pero parece que algo falla porque no puedo indicarle los 3 valores a la vez.

Código
  1.   Dim _var As Char
  2.  
  3.                Console.Write("1º Pronostico: ")
  4.                _var = CChar(Console.ReadLine())
  5.  
  6.                While _var <> "1"c Or "2 c Or "X"c Or "x"  ' (Aqui es donde me da el Error)
  7.  
  8.                    Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
  9.                    Console.ReadLine()
  10.  
  11.                End While

¿Alguna idea de porque no funciona?


Título: Re: Programa Quiniela Deportiva
Publicado por: 79137913 en 17 Enero 2011, 19:22 pm
HOLA!!!

Esto va en .NET (Programacion Gral) MOD: JAJAJA, NO DURO MUCHO EN VB6 XD.

Código
  1. While _var <> "1"c Or "2 c Or "X"c Or "x"

Primero, te faltan comillas en el 2, Suponiendo que sea VB6 repeti la condicion completa en cada una, y la "c" que pones despues del string no se para que es.

Aunque no veo ningun Vector(array) asi lo arreglaria yo:
Código
  1. While _var <> "1" Or _var <> "2" Or  _var <>"X" Or _var <> "x"



GRACIAS POR LEER!!!


Título: Re: Programa Quiniela Deportiva
Publicado por: MicroHack en 17 Enero 2011, 19:28 pm
HOLA!!!

Esto va en .NET (Programacion Gral) MOD: JAJAJA, NO DURO MUCHO EN VB6 XD.

Código
  1. While _var <> "1"c Or "2 c Or "X"c Or "x"

Primero, te faltan comillas en el 2, Suponiendo que sea VB6 repeti la condicion completa en cada una, y la "c" que pones despues del string no se para que es.

Aunque no veo ningun Vector(array) asi lo arreglaria yo:
Código
  1. While _var <> "1" Or _var <> "2" Or  _var <>"X" Or _var <> "x"



GRACIAS POR LEER!!!

Perdon por ponerlo donde no era, lo de las comillas lo escribi mal aqui pero en el editor las tengo puestas.

Y poner:

Código
  1. While _var <> "1" Or _var <> "2" Or  _var <>"X" Or _var <> "x"

Tampoco funciona porque lo probe antes, uso el VB.NET en Visual Studio 2010



Título: Re: Programa Quiniela Deportiva
Publicado por: .mokk. en 17 Enero 2011, 19:45 pm
Gran error aqui mira

Código:
Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
                    Console.ReadLine()

Porque no estas volviendo a asignarle el nuevo valor a _var y am en el while tmb esta incorrecto a como lo colocastes, podrias tambien usar un IF si se te es mas facil o talves un switch(creo que aqui es select case)

P.D. la letra c es alguna variable ? si es asi esta bien colocarla en el while si no lo es solo deberia funcionar usando

Código:
while _var <> 1 or _var <> 2 or _var <> "x"
'Codigo
Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
                    _var = Console.ReadLine()
end while

79137913: Segun recuerdo en VB.net no difiere mayuscula o minuscula por lo que
_var <> "X" or _var <> "x"
seria lo mismo con solo colocar uno no?


Título: Re: Programa Quiniela Deportiva
Publicado por: MicroHack en 18 Enero 2011, 00:54 am
No funciona de esa manera.

Nose, tiene que haber una sintaxis para que el while pueda concadenar condiciones y comprobarlas en una misma linea.  >:(


Título: Re: Programa Quiniela Deportiva
Publicado por: .mokk. en 18 Enero 2011, 06:51 am
O si se me habi pasado xD

en ves de Or, es And , porque usando or esque si alguna de esas se cumple repetira el while, lo cual lo que deceamos esque solo se repita si todas es lo mismo osea True, en fin el codigo quedaria asi:

Código
  1.   Dim _var As Char
  2.  
  3.        Console.Write("1&#186; Pronostico: ")
  4.        _var = CChar(Console.ReadLine())
  5.  
  6.        While _var <> "1" And _var <> "2" And _var <> "X" And _var <> "x"
  7.  
  8.            Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
  9.            _var = CChar(Console.ReadLine())
  10.  
  11.        End While

Tenian razon sobre lo de "X" y "x", el programa si nota la diferencia, me disculpo por mi ignorancia en ese aspecto. jeje


Título: Re: Programa Quiniela Deportiva
Publicado por: MicroHack en 18 Enero 2011, 13:09 pm
EDIT: Esta es la sintaxis correcta

Código:

While (_var <> "1"c And _var <> "2"c And _var <> "x"c And _var <> "X"c)
    Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
                    _var = CChar(Console.ReadLine())


Ahora si me funciona, gracias a todos.


Título: Re: Programa Quiniela Deportiva
Publicado por: 79137913 en 18 Enero 2011, 15:36 pm
HOLA!!!

79137913: Segun recuerdo en VB.net no difiere mayuscula o minuscula por lo que
_var <> "X" or _var <> "x"
seria lo mismo con solo colocar uno no?

En cuanto a manejo de variables no diferencia entre mayusculas y minusculas, pero en manejo de strings (cadenas de texto) si diferencia, * si osea si pones un in que sea x=X va a ser true, pero si pones un if que sea "x"="X" va a ser false.

*MOD: Para que no diferencie, tendrias que hacer algo asi UCase("x")=UCase("X") o sino LCase("x")=LCase("X")

GRACIAS POR LEER!!!