Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 7hongo7 en 24 Marzo 2013, 02:52 am



Título: Problema de Collatz
Publicado por: 7hongo7 en 24 Marzo 2013, 02:52 am
Hola de nuevo yo jejeje causando molestias, bueno mi duda es como calcular la longitud del ciclo y como imprimo en pantalla el numero mas grande, tengo que hacer el problema de Collatz y este es mi código:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int num=0;
   scanf("%d",&num);
   while(num>1){
      if(num%2==0){
         num = num/2;
      }else{
         num = 3*num+1;
      }
      printf("%d\n",num);
   }
   return 0;
}

y tengo que imprimir tambien en pantalla el valor l que es la longitud del calculo y m que es el número mas grande de todos los calculos, creo yo que se hace con un ciclo do...while pero realmente no lo se gracias por su ayuda....


Título: Re: Problema de Collatz
Publicado por: rir3760 en 24 Marzo 2013, 03:45 am
Para conocer el numero de valores en la serie inicializas fuera del bucle un contador con el valor uno, dentro del bucle lo incrementas en una unidad por cada iteracion.

Para conocer el máximo otro contador, este inicia con el numero introducido por el usuario. Dentro del bucle si el siguiente valor de la serie es 3n + 1 verificas si este es el nuevo máximo.

Un saludo


Título: Re: Problema de Collatz
Publicado por: 7hongo7 en 26 Marzo 2013, 17:13 pm
Muchas gracias hermano lo hice y me funciono ;-) ;-) ;-) ;-) aunque me tarde algo en entenderle  :xD :xD