Autor Tema: Algoritmo Contar a intervalos (saltos) hacia delante y hacia detrás incremento  (Leído 3589 veces)

dav2k6

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Hola, estoy pasando un algoritmo a visual basic... y no logro sacarlo.. A ver si me pueden echar un cable..  he ido probando pero no lo tengo muy claro..

Contar a intervalos hacia delante y hacia detrás

Código: [Seleccionar]
VInicial = Val(TextBox2.Text)
        VFinal = Val(TextBox3.Text)
        VIncre = Val(TextBox4.Text)
        cont = 0

        If IsNumeric(VInicial) And IsNumeric(VFinal) And IsNumeric(VIncre) Then

            cont = VInicial

            For i = VInicial To VFinal Step VIncre

                If cont > VFinal Then

                    TextBox1.Text = TextBox1.Text & "-" & cont & i

                Else

                    cont = cont + VIncre

                End If

            Next

        Else

            MsgBox("los datos no son numeros")
        End If

donde me estoy equivocando? (Uso Visual Basic 2010)
« Última modificación: 07 de Junio 2020, 19:39 por Ogramar »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Algoritmo no hace nada....
« Respuesta #1 en: 07 de Julio 2019, 10:44 »
Hola! Hay cosas que no veo claras en el código que propones. En el if

  If cont > VFinal Then

                    TextBox1.Text = TextBox1.Text & "-" & cont & i

no entiendo bien qué es lo que pretendes hacer.

El planteamiento que yo haría sería con un bucle mientras (while), algo como:

Inicio
Tomar valores iniciales de ValorIni, ValorFin y ValorInc
Comprobar que sean números
Mientras (cont < ValorFin)     
Mostrar cont
cont = cont + valorInc
FinMientras
Mostrar "El valor de cont ha superado al valor de ValorIni"
Fin

Fíjate que la condición para seguir en el bucle es que cont sea menor que ValorFin.  Eso implica que cuando cont es mayor que ValorFin se sale del bucle, que es tal y como se plantea en el diagrama de flujo del problema.

En el curso de bases de la programación I en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59 tienes muchos ejemplos de planteamiento de algoritmos. Y en el curso de Visual Basic en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61 tienes muchos de esos algoritmos trasladados a Visual Basic

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

dav2k6

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Algoritmo no hace nada....
« Respuesta #2 en: 08 de Julio 2019, 09:13 »
Gracias por la explicacion..... El tema es que tengo que hacerlo con ciclo for, next
Muchas gracias por los links voy a echarles un vistazo a ver si encuentro como mas y explican como hacerlo.

Con este código:

  If cont > VFinal Then
                    TextBox1.Text = TextBox1.Text & "-" & cont & i

no entiendo bien qué es lo que pretendes hacer.

Lo que pretendia hacer era mostrar el valor de i y el contador....

O sea, si fuese de 2 de a 10 con intervalo de 2....

mostrar...

2-2-4-2-6-2-8-2-10.....
« Última modificación: 07 de Junio 2020, 19:41 por Ogramar »

dav2k6

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Algoritmo no hace nada....
« Respuesta #3 en: 09 de Julio 2019, 17:24 »
ya esta solucionado....

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:Algoritmo no hace nada....
« Respuesta #4 en: 09 de Julio 2019, 21:52 »
Hola, si indicas la solución te lo agradecemos como aportación  ;D

dav2k6

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Algoritmo no hace nada....
« Respuesta #5 en: 10 de Julio 2019, 09:00 »
Y tanto...

A ver, el ejercicio me pide un numero de inicio y otro de fin.... uno tiene que ser correlativo, con un incremento y decrecimiento....

-En el correlativo por ejemplo de 5 a 10....

 
Código: [Seleccionar]
VInicial = CInt(Txtnum.Text)
        VFinal = CInt(Txtnum2.Text)
        VIncre = CInt(Txtincre.Text)

        If IsNumeric(VInicial) And IsNumeric(VFinal) And (VIncre) Then

            cont = VInicial

            For i = VInicial To VFinal

                TxtArray.Text = TxtArray.Text & "-" & i

            Next

        Else
            MsgBox("no son numeros")

        End If

-De 5 a 20 con incremento de 5 en 5 .. 5,10,15,20

 
Código: [Seleccionar]
If IsNumeric(VInicialPosi) And IsNumeric(VFinalPosi) And (VIncrePosi) Then
            contPosi = VInicialPosi

            For i = VInicialPosi To VFinalPosi Step VIncrePosi
                if conposi > VfinalPosi
                TxtArray.Text = TxtArray.Text & "-" & contPosi
                contPosi = contPosi + VIncrePosi
                Else
           Msgbox("fin")
           Next

        Else
            MsgBox("no son numeros")

        End If


-De 20 a 5 con decrecimiento negativo de 5 en 5, 20, 15, 10, 5....

Código: [Seleccionar]
If IsNumeric(VInicialNega) And IsNumeric(VfinalNega) And (VincrNega) Then
            contnega = VInicialNega

            For i = VfinalNega To VInicialNega Step VincrNega

                if contnega > VfinalNega

                TxtArray.Text = TxtArray.Text & "-" & contnega
                contnega = contnega - VincrNega

                else
                Msgbox("fin")
 
                 end if
            Next

        Else
            MsgBox("no son numeros")

        End If

Un saludo.
« Última modificación: 07 de Junio 2020, 19:40 por Ogramar »

 

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".