Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: dav2k6 en 05 de Julio 2019, 13:03

Título: Algoritmo Contar a intervalos (saltos) hacia delante y hacia detrás incremento
Publicado por: dav2k6 en 05 de Julio 2019, 13:03
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)
Título: Re:Algoritmo no hace nada....
Publicado por: César Krall 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!
Título: Re:Algoritmo no hace nada....
Publicado por: dav2k6 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.....
Título: Re:Algoritmo no hace nada....
Publicado por: dav2k6 en 09 de Julio 2019, 17:24
ya esta solucionado....
Título: Re:Algoritmo no hace nada....
Publicado por: javi in the sky en 09 de Julio 2019, 21:52
Hola, si indicas la solución te lo agradecemos como aportación  ;D
Título: Re:Algoritmo no hace nada....
Publicado por: dav2k6 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.