Problema de Collatz

Iniciado por 7hongo7, 24 Marzo 2013, 02:52 AM

0 Miembros y 1 Visitante están viendo este tema.

7hongo7

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

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

7hongo7

Muchas gracias hermano lo hice y me funciono ;-) ;-) ;-) ;-) aunque me tarde algo en entenderle  :xD :xD