Autor Tema: Ejercicio 6 - Semana 9 curso tutorizado on-line bases de la programación  (Leído 3843 veces)

JValero

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 27
    • Ver Perfil
Buenas tardes,

En este ejercicio no soy capaz de que me aparezcan los datos correctamente. Los números de modelo de los vehículos no me aparecen dentro de cada correspondiente grupo de vehículos.

El código que llevo hasta ahora realizado es el siguiente:

Código: [Seleccionar]
Option Explicit

Dim i As Integer
Dim Modelo(1 To 8) As Integer

Private Sub Form_Load()
Form1.Caption = "Modelos de vehículos"
Label1.Alignment = 2
Label1.Font = True
Label2.Alignment = 2
Label2.Font = True
Label3.Alignment = 2
Label3.Font = True
i = 1
Modelo(1) = 350
Modelo(2) = 5000
Modelo(3) = 21
Modelo(4) = 100
Modelo(5) = 125
Modelo(6) = 750
Modelo(7) = 800
Modelo(8) = 850


Do While Modelo(i) <> 850

If Modelo(i) = 125 Then

End If
If Modelo(i) = 350 Then

End If
i = i + 1
Loop




End Sub

Los datos deberían de quedar del siguiente modo:

"Números de modelo de Fórmula 1" = 350
"Números de modelo de motocicletas" = 5000, 21, 100, 125
"Numeros de modelos de camiones" = 750, 800, 850

¿Cómo podría hacer para que los datos se mostraran en tres labels que he creado para mostrar los resultados?

Muchas gracias por la ayuda.

Un saludo.
« Última modificación: 02 de Septiembre 2014, 18:27 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicio 6 - Semana 9
« Respuesta #1 en: 17 de Mayo 2014, 19:04 »
Esto supongo que puede hacerse de diversas maneras pues la programación da pie a que se puedan escribir programas de distintas maneras.

Te indico una posible solución (en este caso usando únicamente un label, Label1):

La condición para entrar al bucle puede ser la que tú has indicado: Do While Modelo(i) <> 850 , aunque también podría plantearse de otras maneras. Supongamos que usamos esta.

Antes de entrar al bucle sabemos algo: que lo primero que viene son coches de fórmula 1, por tanto antes de entrar al bucle podemos escribir Label1 = "Números de modelo de coches de fórmula 1: "

Al entrar en el bucle vamos escribiendo en el label los modelos que vengan directamente, hasta detectar el 350.

En ese momento introducimos dos saltos de línea y escribimos Label1 = Label1 & vbCrLf & vbCrLf & "Números de modelo de motocicletas: "

¿Por qué? Porque sabemos que a partir del 350 lo que vienen son motocicletas.

Seguimos escribiendo todo lo que venga hasta que detectemos el 125 que sabemos que es la última motocicleta. En ese momento escribimos:

Label1 = Label1 & vbCrLf & vbCrLf & "Números de modelo de camiones: "

¿Por qué? Porque sabemos que a partir de ese momento vienen camiones.

Ahora vamos escribiendo todo lo que llega, pero tenemos el problema de que cuando se llegue a 850 no se va a entrar en el bucle ¿Qué podemos hacer entonces? Con un condicional if comprobar si una vez incrementado el valor de i nos viene 850. En ese caso, escribimos Label1 = Label1 & Modelo(i) para que se muestre ese número de modelo.

Al intentar volver al inicio del bucel y valer modelo (i ) = 850 no se entra en el bucle y se sale del programa

La idea se refleja en este código, lo importante más que el programa funcione (espero que sí) es que seas capaz de ver por qué funciona, además prueba a introducir más datos de modelo y predecir tú mismo qué supones que va a hacer el programa. Luego ejecuta el programa y comprueba que hace lo que tú has predicho, si logras esto es que estás "comprendiendo adecuadamente lo que hace el código", saludos

Código: [Seleccionar]
Option Explicit
Dim i As Integer
Dim Modelo(1 To 8) As Integer

Private Sub Form_Load()
Form1.Caption = "Modelos de vehículos"
Label1.Alignment = 2
Label1.Font = True
Modelo(1) = 350
Modelo(2) = 5000
Modelo(3) = 21
Modelo(4) = 100
Modelo(5) = 125
Modelo(6) = 750
Modelo(7) = 800
Modelo(8) = 850
Label1 = "Números de modelo de coches de fórmula 1: "
i = 1
Do While Modelo(i) <> 850
Label1 = Label1 & Modelo(i) & " - "
If Modelo(i) = 350 Then
Label1 = Label1 & vbCrLf & vbCrLf & "Números de modelo de motocicletas: "
End If
If Modelo(i) = 125 Then
Label1 = Label1 & vbCrLf & vbCrLf & "Números de modelo de camiones: "
End If
i = i + 1
If Modelo(i) = 850 Then
Label1 = Label1 & Modelo(i)
End If
Loop
End Sub

JValero

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 27
    • Ver Perfil
Re:Ejercicio 6 - Semana 9
« Respuesta #2 en: 17 de Mayo 2014, 20:30 »
Hola de nuevo Álex,

Está muy claro. Creeme que con tu explicación la duda está resuelta.

El principal problema que estaba encontrando es que usaba varios Labels y los resultados me salían sin el orden apropiado en cada uno de ellos.

Muchas gracias por tu ayuda, se agradece muchísimo.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Ejercicio 6 - Semana 9
« Respuesta #3 en: 17 de Mayo 2014, 20:40 »
Con varios labels también lo puedes hacer, lo único que tienes que adaptar la lógica para detectar cuándo se deben mostrar los datos en un label y cuándo en un otro. Aquí lo he hecho usando una variable auxiliar denominada mostrando. Si mostrando vale 1 significa que se debe mostrar el mensaje sobre el label1, si mostrando vale 2 que se debe mostrar sobre el label 2, y si mostrando vale 3 que se debe mostrar sobre el label3. En este caso cada label se encarga de un tipo de vehículos... Creo que ambas formas se pueden considerar correctas... Saludos

Código: [Seleccionar]
Option Explicit
Dim i As Integer
Dim Modelo(1 To 8) As Integer
Dim mostrando As Integer

Private Sub Form_Load()
Form1.Caption = "Modelos de vehículos"
Label1.Alignment = 2
Label1.Font = True
Modelo(1) = 350
Modelo(2) = 5000
Modelo(3) = 21
Modelo(4) = 100
Modelo(5) = 125
Modelo(6) = 750
Modelo(7) = 800
Modelo(8) = 850
Label1 = "Números de modelo de coches de fórmula 1: "
Label2 = "Números de modelo de motocicletas: "
Label3 = "Números de modelo de camiones: "
i = 1
mostrando = 1
Do While Modelo(i) <> 850
If mostrando = 1 Then
Label1 = Label1 & Modelo(i) & " - "
End If
If mostrando = 2 Then
Label2 = Label2 & Modelo(i) & " - "
End If
If mostrando = 3 Then
Label3 = Label3 & Modelo(i) & " - "
End If
If Modelo(i) = 350 Then
mostrando = 2
End If
If Modelo(i) = 125 Then
mostrando = 3
End If
i = i + 1
If Modelo(i) = 850 Then
Label3 = Label3 & Modelo(i)
End If
Loop
End Sub

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".