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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa que factorize números enteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa que factorize números enteros  (Leído 2,368 veces)
Einstein92

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Programa que factorize números enteros
« en: 25 Enero 2014, 13:21 pm »

Buenas a todos, tengo un problema al ejecutar el código de un programa, resulta que se queda colgado y dice "Factorizar.exe" dejó de funcionar, y no tengo ni idea de por qué, ya que no veo nada en el código mal  :huh: . El enunciado del ejercicio es el siguiente:

- Descomponer un número entero en sus factores primos.

Y mi solución esta:

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

int Factor(int a){
  int b=2;

  while (a%b!=0) b++;
  return (b);
}

int main(void){
  int x,y,cociente;
  printf("Introduzca un numero entero: ");
  scanf("%d",x);
  y=Factor(x);

  while(y>1){
    printf("%d\n",y);
    cociente=x/(Factor(x));
    y=Factor(cociente);
  }
  system("pause");
  return 0;
}

Puesto que todavía no sabemos hacer que una función devuelva más de un valor, he creado una función que me devuelve el primer factor primo, y con un bucle la voy llamando varias veces, cambiando el valor del parámetro de entrada por el siguiente cociente, hasta que el factor que me devuelva sea igual o menor a 1.

¿Qué problema hay? Seguramente esté en el código... :|


Un saludo y gracias por adelantado.



En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Programa que factorize números enteros
« Respuesta #1 en: 25 Enero 2014, 13:54 pm »

scanf("%d",&x);   le falta el & delante de la x.
Aún que hay mas errocillos, pero esos lo arreglas tu, ya no se cuerga XD


« Última modificación: 25 Enero 2014, 13:58 pm por vangodp » En línea

Einstein92

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Programa que factorize números enteros
« Respuesta #2 en: 25 Enero 2014, 17:51 pm »

Muchas gracias !! Me lleve media hora viendo que era y no me dí cuenta jaja!! Además ya solucioné el resto del código (tenía un par de cosas mal en mi algoritmo), os lo dejo por si me podéis dar alguna mejora.

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

int Factor(int a){
  int b=2;

  while (a%b!=0) b++;
  if(a==1) b=1;
  return (b);
}

int main(void){
  int x,y;
  printf("Introduzca un numero entero: ");
  scanf("%d",&x);

  if(x==1||x==-1) printf("1\n");

  else{
    y=Factor(x);
    while(Factor(x)>1){
      printf("%d\n",y);
      x=x/(Factor(x));
      y=Factor(x);
    }
  }

  system("pause");
  return 0;
}


Gracias de nuevo!!
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Programa que factorize números enteros
« Respuesta #3 en: 25 Enero 2014, 20:03 pm »

Einstein92

para publicar codigo usa las etiquetas GeSHi que hay arriba de los emoticonos a la derecha, si no, se más dificil de leer

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int Factor(int a){
  5.  int b=2;
  6.  
  7.  while (a%b!=0) b++;
  8.  if(a==1) b=1;
  9.  return (b);
  10. }
  11.  
  12. int main(void){
  13.  int x,y;
  14.  printf("Introduzca un numero entero: ");
  15.  scanf("%d",&x);
  16.  
  17.  if(x==1||x==-1) printf("1\n");
  18.  
  19.  else{
  20.    y=Factor(x);
  21.    while(Factor(x)>1){
  22.      printf("%d\n",y);
  23.      x=x/(Factor(x));
  24.      y=Factor(x);
  25.    }
  26.  }
  27.  
  28.  system("pause");
  29.  return 0;
  30. }
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Programa que factorize números enteros
« Respuesta #4 en: 25 Enero 2014, 20:49 pm »

El algoritmo es sencillo aunque se puede hacer más eficiente (hablo de la función Factor).

Aquí hay un hilo sobre los números primos, también te sirve para calcular divisores:
http://foro.elhacker.net/programacion_cc/codigo_para_calcular_los_numeros_primos-t405451.0.html
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Einstein92

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Programa que factorize números enteros
« Respuesta #5 en: 25 Enero 2014, 21:49 pm »


para publicar codigo usa las etiquetas GeSHi que hay arriba de los emoticonos a la derecha, si no, se más dificil de leer


Perdona, tomo nota para la próxima :)

El algoritmo es sencillo aunque se puede hacer más eficiente (hablo de la función Factor).

Aquí hay un hilo sobre los números primos, también te sirve para calcular divisores:
http://foro.elhacker.net/programacion_cc/codigo_para_calcular_los_numeros_primos-t405451.0.html

Le he echado un vistazo, aunque hay conceptos que me superan jajaja. Curiosamente, el ejercicio anterior a este era el de realizar una función que calcule si un número es primo. No le vi aparente dificultad al algoritmo, pero no me ha llegado a funcionar mi código (y eso que no veo fallo alguno), ya que siempre me da que es primo o si cambio una cosa, que no es primo  :huh:

Les dejo el código aqui por si ven el fallo..

Código
  1. int Primo1(int a){
  2.  
  3.  int b=2;
  4.  
  5.  while((a%b!=0)&&(b<=(a/2))) b++;
  6.  
  7.  if(a%(b-1)==0) return(-1);
  8.  
  9.  else return(1);
  10. }
  11.  
  12. int main(void){
  13.  int x,y;
  14.  printf("Introduzca x: ");
  15.  scanf("d%",&x);
  16.  y=Primo1(x);
  17.  
  18.  if(y==1) printf("Es primo \n");
  19.  else printf("No es primo \n");
  20.  
  21.  system("pause");
  22.  return 0;
  23. }
  24.  

Un saludo !!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
number_format() y numeros enteros (Solucionado) « 1 2 »
PHP
Littl3 10 11,935 Último mensaje 14 Octubre 2010, 17:34 pm
por ~ Yoya ~
mantisa,numeros reales,enteros caracter
Programación C/C++
mxsoun 1 2,047 Último mensaje 5 Septiembre 2011, 19:25 pm
por Eternal Idol
50 números enteros introducidos por teclado
Programación C/C++
douglascarvallo 4 3,866 Último mensaje 23 Junio 2013, 06:58 am
por douglascarvallo
Pasar numeros enteros arábigos a romanos, por donde empezar. « 1 2 3 »
Programación C/C++
Caster 21 8,724 Último mensaje 18 Mayo 2014, 18:38 pm
por Blaster
Programa que lea números enteros y nos diga cuántos números son pares.
Programación C/C++
estudiante_1 3 1,807 Último mensaje 20 Agosto 2015, 18:58 pm
por estudiante_1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines