elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Tengo un problema con un programa en C en: 11 Noviembre 2016, 11:33 am
El enunciado del ejercicio dice:

Diseña un programa que dado un número entero positivo,
compruebe si es un número curioso. Un número es curioso si al ser
multiplicado por sí mismo da como resultado otro número acabado
en el número inicial dado.
Por ejemplo: 6 * 6 = 36,  376 * 376 = 141.376.

Este es el codigo que he creado:

 
Código
  1.  #include <stdio.h>
  2.    #include <math.h>
  3.  
  4.    int main(){
  5.        int n,i,p,cont=0,divisor=0;
  6.  
  7.  
  8.         printf("Escribe un digito: "); scanf("%d", &n);
  9.            p=n*n; // calculo la multiplicacion
  10.            printf("El producto es: %d\n",p);
  11.  
  12.            for(i=0;  cont!=1; i++){ // inicializo el valor de i que sera el exponente
  13.               divisor=pow (10, i); // calculo el valor de 10 elevado a los valores que obtendra i
  14.               /*.................*/
  15.               if(divisor>n){
  16.                    cont++;   // si se cumple la condicion anterior, el cont(contador le sumo 1)
  17.  
  18.                  if(p%divisor==n) //el residuo de esta division tiene que dar como resultado n
  19.                     printf("Es un numero curioso\n");
  20.  
  21.                     else printf("No es un numero curioso\n");}
  22.  
  23.            }
  24.  
  25.        return 0;
  26.    }
  27.  
El problema con el programa es que cuando calculo el valor del divisor no lo hace de forma correcta, como podeis observar abajo del calculo del divisor he dejado un comentario con solo puntos(....), si yo ahi imprimo el valor que va adquiriendo el divisor no lo hace de forma correcta, me da estos resultados por ejemplo divisor=pow(10, i );
sus multiplos deberian ser 1, 10, 100, 1000,....
en vez de eso adopta estos valores 1, 10, 99, 1000, 9999, ....(no entiendo por que???).
por este motivo por el el cual algunas partes me dan bien y otras mal ya que por ejemplo
5*5=25 ...haria 25%10=5 seria un numero curioso en cambio, 25*25=625...625%100=25 tambien seria un numero curioso pero como el múltiplo calculado segun el programa vale 99 y no 100 me sale que no es un numero curioso, sii alguien me pudiera dar una solucion, se lo agradeceria.
2  Programación / Programación C/C++ / Tengo una duda con un programa que hice en C en: 10 Noviembre 2016, 23:57 pm
Este es el enunciado del ejercicio:

Escribe un programa que dado un número entero positivo, indique si
contiene una secuencia apocalíptica. Un número contiene una secuencia
apocalíptica si tiene al menos tres veces seguidas la cifra 6.
Por ejemplo: 666, 46 663, 23666997.

y este es el programa que hice:

Código
  1. #include <stdio.h>
  2. int main(){
  3. int n,cont=0,r;
  4. printf("Escribe un numero: "); scanf("%d",&n);
  5. while(n>0 && cont<3){
  6.    if(n%10==6){ // si el numero divido 10 da como residuo 6
  7.        n=n/10;      // calculo el cociente
  8.        if(n%10==6){ // el numero adopta el valor del cociente
  9.            n=n/10; // realizo lo mismo que el anterio (cociente)
  10.            r=n%10; // calculo el reciduo
  11.            if(n%10==6 || r==6 ){ se han de cumplir uno de las dos condiciones
  12.                cont+=3;// constante  que almacena un 3, es decir, almacena tres veces              seguidas el numero 6
  13.            }
  14.        }
  15.    }
  16.  
  17.      if(n%10!=6){
  18.         n=n/10;
  19.      }
  20. }
  21. if(cont>=3)
  22.   printf("El numero es apocaliptico\n");
  23. else
  24.   printf("El numero no es apocaliptico\n");
  25.  
  26. return 0;}
  27.  
todo iba bien, me reconocia lo que pedia, lo malo es cuando ingreso una cantidad elevada de numeros, por ejemplo "6669850943 o 666666666", me gustaria que me dijierais alguna solucion, os lo agradeceria.



Mod: Los códigos deben ir en etiquetas GeSHi, no se debe escribir en mayúsculas
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines