VB 6 - Como fazer um gerador das séries de collatz

Status
Fechado a novas mensagens.

P@uloF

Membro
Boas pessoal!! Tenho aki um trabalho para fazer mas n estou a perceber mt bem como se faz :confused:... Será k m podem orientar?!

Tenho d modificar este programa:

seriecollatzmw6.jpg

K tem o código:​

Código:
[LEFT]Private Sub Command_Gerar_Click()
Dim Numero As Long, Contador As Integer
Numero = Text_ValorEntrado.Text
List_Saida.Clear
List_Saida.AddItem Numero
Contador = 1
Do Until Numero = 1[/LEFT]
 
[LEFT]If Numero Mod 2 = 0 Then
Numero = Numero / 2
Else
Numero = Numero * 3 + 1
End If[/LEFT]
 
[LEFT]List_Saida.AddItem Numero
Contador = Contador + 1[/LEFT]
 
[LEFT]Loop
Label_NumeroElementos.Caption = Contador
End Sub[/LEFT]

De modo a k este apresente o total de elementos da série de Collatz para diversos números de partida. Os números de partida são os inteiros compreendidos entre os dois números especificados ( de:... e até:... ).​

seriecollatz2xi6.jpg

Não estou bem a ver as alterações k tenho de fazer!!! :confused:

Espero rsp
Cumps ;)
 
Última edição pelo moderador:
aqui tens...

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim numinicial As Long, numfinal As Long, numero As Long, cnt As Long, maximo As Long

numinicial = txt_numinicial.Text
numfinal = txt_numfinal.Text
txt_resultados.Clear()

If numinicial <= 1 Or numinicial > numfinal Then
MsgBox("Erro na entrada de dados. O número inicial deve ser maior que 1 e o número final deve ser maior que o número inicial.")
Else
For n = numinicial To numfinal
numero = n
maximo = numero
cnt = 1
Do
If numero Mod 2 = 0 Then
numero = numero / 2
Else
numero = numero * 3 + 1
End If
cnt = cnt + 1
If numero > maximo Then maximo = numero
Loop Until numero = 1
txt_resultados.AppendText(n & " " & cnt & " " & maximo & vbCrLf)
Next
End If
End Sub
End Class
 
Status
Fechado a novas mensagens.
Back
Topo