Tengo errores al calcular la persistencia de un número dado en lenguaje c

Solo me queda este programa que al final me da un error aquí lo pongo en negritas es sobre calcular la persistencia de un numero dado o sea es la cantidad de veces que hay que multiplicar los dígitos de un número hasta que se convierta en un número de un solo dígito.
#include <stdio.h>
#include <conio.h>
int main() {    
      int re1=0,re2=0,re3=0,num=0,num2=0,persi=0;
      printf("Introduzca un numero:");
      scanf("%i",&num);
      num2=num;
      if (num2 >= -9 && num2 <= 9)
      {
        printf("La persistencia de %i es 0",num);   
      }
      else
      {    
      while ((num2 != 0) && (re3 < -9 && re3 > 9))
      {
        re1=num2 % 10;
        num2/=10;
        re2=num2 % 10;
        num2/=10;
        re3=re1 * re2;
        persi++;
        }
        }
        if (num2==0)
        {
          if (re3 >= -9 && re3 <= 9)
          {
            printf("La persistencia de %i es %i",num,persi);            
          }
          else
          {
            if (re3 >= 9)
      getch();
      return 0;
}

1 respuesta

Respuesta
1
Aquí tienes tu programa:
#include <stdio.h>
#include <conio.h>
int main() {
  int re=0,multip=1,num=0,num2=0,persi=0;//He eliminado las variables "re2"
                     //y "re3" y he a¤adido una llamada
                     //"multip" que almacena el numero
                     //que resulta de multiplicar todas
                     //las cifras del numero anterior
  printf("\nIntroduzca un numero:");
  scanf("%d",&num);
  num2=num;
  if(num2 >= -9 && num2 <= 9)
    printf("\nLa persistencia de %d es 0",num);
  else{
    while(num2<-9 || num2>9){
      multip=1;
      while(num2<0 || num2>0){//Bucle para multiplicar
                   //todas las cifras del numero
    re=num2 % 10;
    num2/=10;
    multip*=re;
      }
      num2=multip;
      printf("\n%d",num2);//Esta linea la puedes eliminar si quieres
      persi++;
    }
    printf("\n\nLa persistencia de %d es %d",num,persi);
  }
  getch();
  return 0;
}
Porque me da 0 siempre
Pues no lo se... a mi no m da siempre 0, es posible que hayas introducido números muy grandes, los cuales no soporta el tipo int y produce un error interno. A ver prueba con el numero 345 cuya persistencia es 2.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas