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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  ejercicio Nº1 de Visual basic
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ejercicio Nº1 de Visual basic  (Leído 29,655 veces)
Codename!!


Desconectado Desconectado

Mensajes: 883



Ver Perfil
ejercicio Nº1 de Visual basic
« en: 18 Julio 2004, 08:34 am »

hola, yo se que este ejercicio se hace kon el randomize pero nose de que manera ( y eso que pensaba que era un pijada  ::) ) solo me falta un empujoncito, perdon por mi ignorancia espero que lo komprendais




En línea

No te dejes mover por las masas, se tu mismo.




soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: ejercicio Nº1 de Visual basic
« Respuesta #1 en: 18 Julio 2004, 20:20 pm »

Hola
Para eso estamos je je je

¿Qué cosas necesitas?
1- Generar números aleatorios.
2- Guardar los números que vas a obtener para mostrarlos al final
3. Comprobar cada vez que obtienes un número que ese número no ha salido antes.

Así que en mi opinión deberías crear una tabla donde puedan entrar esos cinco números y la inicializas con el valor -1 (es un valor imposible en la loto).

Luego obtienes un número.

Luego compruebas que ese número no ha salido antes recorriendo la tabla a ver si está. Si está vuelves a generar número y comprobar. Si no está lo metes en la tabla y generas el siguiente.

Cuando tengas todos muestras la tabla y ya está.

Para obtener números aleatorios utilizas la orden RND que devuelve un número aleatorio entre 1 y 0. Si tu quieres que te devuelva valores entre 1 y 25 tendrás que hacer '25 * RND'. Si quieres que te devuelva entre y 0 y 9 pues '98 * RND'. Estos números ademas tienen decimales así que tu debes hacer INT(RND * 98) para que obtenga números entre 0 y 98 enteros. Si quieres que salgan valores entre 1 y 99 tendrás que sumarle uno al resultado '1+int(RND * 98)'

Te pongo el pseudocódigo paso por paso para que lo entiendas bien aunque es mas largo.

Sería algo como esto:

En pseudocódigo sería
Código:
---------- Declaraciones ---------------
Declarar_Tabla (enteros)
Declarar variable VALIDO (booleana)
Declarar Numero (entero)
---------- Asignar valores iniciales ----
Rellenar_tabla_con_valores_-1
VALIDO=FALSE
---------- Rutina Principal --------------
sub Cmd_Obtener_Numeros_Click()
   Iniciar_bucle_para_cada_número
      Numero=Obtener_número
      VALIDO=comprobar(Numero)   
      si valido entonces
         Meter_Elemento_En_Tabla
      si no
         Decrementar contador de bucle en 1
      fin si
   Fin_bucle
   Mostrar_tabla
EndSub

La función de comprobar número sería
Código:
Function Comprobar(int Numero)
------------- Declarar Variable ---------
Contador (entero)

------------- Asignar valores iniciales ---
comprobar=true

------------- código ------------------------
Iniciar_bucle para recorrer la tabla con contador
   si tabla(contador) es igual a numero then
      comprobar=false
      salir de funcion
   endif
End Function

La función de mostrar la tabla obtenida sería
Código:
Function Mostar_Tabla()
------------- Declarar variable --------------
Contador (entero)

Iniciar_bucle con contador
   mostrar tabla(contador)
fin_bucle
End Function

Si no te sale te posteo código

Un saludo
 :D


En línea

Callar es asentir ¡No te dejes llevar!
Codename!!


Desconectado Desconectado

Mensajes: 883



Ver Perfil
Re: ejercicio Nº1 de Visual basic
« Respuesta #2 en: 18 Julio 2004, 21:42 pm »

ok,gracias soplo voy a intentar hacerlo, y sino ya te kontare
En línea

No te dejes mover por las masas, se tu mismo.




Codename!!


Desconectado Desconectado

Mensajes: 883



Ver Perfil
Re: ejercicio Nº1 de Visual basic
« Respuesta #3 en: 18 Julio 2004, 22:59 pm »

nada no consigo hacerlo  :'( :'( :'( :'(  me gustaria ver el codigo plis, y porsupuesto gracias soplo
En línea

No te dejes mover por las masas, se tu mismo.




soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: ejercicio Nº1 de Visual basic
« Respuesta #4 en: 19 Julio 2004, 03:17 am »

Hola

Declaro una variable array tabla con cinco posiciones para cinco números. Al estar fuera de cualquier rutina es una variable global a nivel de formulario y será conocida en todas las rutinas de este formulario
---------- Declaraciones ---------------
Código:
Dim TablaNumeros(5) as integer

Comienzo la rutina principal. En ella declaro las variables que necesito en esta rutina.
Valido valdrá true o false según que el número sea válido o no.
Contador valdrá entre 0 y cuatro y corresponde a cada uno de los cinco números que quiero obtener y meter en sus cinco labels: lblnumero(0), lblnumero(1), lblnumero(2), lblnumero(3), lblnumero(4)
Numero: número aleatorio calculado

Código:
sub Command1_Click()
Dim Contador as integer, Valido as boolean, Numero as integer
   RellenarValores  'Llenar la tabla con valores -1
   for Contador=0 to 4 'una vez para cada número
      Numero=int(rnd*98)+1 'obtener número entre 1 y 99
      Valido=comprobar(Numero)   'saber si es válido
      if valido then
         tabla(Contador)=Numero 'meter número en tabla
      else
         Contador=Contador-1 'volver a calcular número
      endif
   Next Contador
   MostrarTabla 'mostrar los elementos de la tabla
EndSub

Aquí inicialmente relleno la tabla con valores -1 que son imposibles. Los números calculados van desde el 1 al 99 y por tanto no es posible tener un valor -1 calculado.
Código:
Sub RellenarValores()
dim Contador as integer
for Contador=0 to 4 'para cada elemento de la tabla
   tabla[contador]=-1 'poner valor -1
next x
End Sub

Aquí muestro la tabla. Si miras el pantallazo correspondiente a este ejercicio verás que hay cinco label llamados LblNumeros. Son un array de controles. De esta forma el primer número debe ir en lblNumero(0) y el último en lblnumero(4)

Código:
Sub MostrarTabla
dim Contador as integer
for Contador=0 to 4 'para cada elemento de la tabla
   lblnumero(contador)=tabla(contador) 'poner el número en pantalla
next x

Aquí compruebo si el número es válido o no. Para ello recorro la tabla y compruebo cada elemento con el número obtenido. Si ya está ahí es que el número que he calculado está repetido y por tanto debo calcular otro. En este caso la función devuelve false. En otro caso devuelve true
Código:
Function Comprobar(Num as integer)
dim Contador as integer

Comprobar=true 'inicialmente se supone que el número es bueno
For Contador=0 to 4 'para cada elemento de la tabla
   if tabla(Contador)=numero then
      comprobar=false 'el número es malo
      exit function
   endif
next Contador
End Function

Un saludo
En línea

Callar es asentir ¡No te dejes llevar!
ziz0u
ZiZ0u [SPAIN]


Desconectado Desconectado

Mensajes: 351


Brillante jugador, mejor persona.


Ver Perfil WWW
Re: ejercicio Nº1 de Visual basic
« Respuesta #5 en: 16 Agosto 2004, 23:10 pm »

Buenas, me llamo ZiZou, soy nuevo en esto de la programación y quisiera completar todos estos ejercicios antes de lanzarme con algo mas complicado.

Mis dudas sobre el primer ejercicio son:

¿Por qué hay que necesitamos justamente el número 98? Si no he entendido mal, RND es igual a un número aleatorio 0 ó 1. Pero si multiplicamos 0 ó 1 por 98, sólo puede dar 0 ó 98.

Siento hacer estas preguntas que seguramente os pareceran basicas, pero agradeceria una aclaracion.

Muchas gracias
En línea

ziz0u
ZiZ0u [SPAIN]


Desconectado Desconectado

Mensajes: 351


Brillante jugador, mejor persona.


Ver Perfil WWW
Re: ejercicio Nº1 de Visual basic
« Respuesta #6 en: 31 Agosto 2004, 01:16 am »

Repase el codigo a conciencia y ya lo he entendido, gracias de todas maneras  :D
En línea

bano


Desconectado Desconectado

Mensajes: 316


Ver Perfil
Re: ejercicio Nº1 de Visual basic
« Respuesta #7 en: 31 Agosto 2004, 01:25 am »

RND es un numero aleatorio entre 0 y 1, no 0 o 1.
Es decir puede ser por ej, 0.5 ...

Solo queria dejarlo claro ...

saludosss  ;)
En línea

capi

Desconectado Desconectado

Mensajes: 12



Ver Perfil WWW
Re: ejercicio Nº1 de Visual basic
« Respuesta #8 en: 30 Diciembre 2004, 02:02 am »

una duda....
usando rnd me sale todo bien pero siempre al ejecutar el programa siempre salen los mismos numeros y en orden, como se podria cabiar eso?? gracias de antemano :P
En línea

hispalink.es.kz --->>>foro empezando, se necesitan colaboradores; contenidos: peliculas, juegos pc, ps2, xxx, etc... pasate por aquí
soplo
Ex-Staff
*
Desconectado Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: ejercicio Nº1 de Visual basic
« Respuesta #9 en: 5 Enero 2005, 05:44 am »

Hola
Eso es porque para generar los números aleatorios utiliza un algoritmo que parte de un número base.

Si cambias el número base entonces cada vez parte de un número diferente para calcular el número aleatorio y por tanto la probabilidad de que se repita es muy pequeña.

Para cambiar el número base utiliza la orden randomize que tiene varios argumentos. Si no le pones ninguno, utiliza el número de serie de la hora actual del sistema

Un saludo
En línea

Callar es asentir ¡No te dejes llevar!
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ejercicio con matrices o funciones en visual c++
Programación C/C++
ZUVAI 1 2,266 Último mensaje 7 Septiembre 2013, 08:54 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines