Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2011, 05:18
juangebeboz
 
Fecha de Ingreso: octubre-2011
Mensajes: 15
Antigüedad: 12 años, 6 meses
Puntos: 1
Programa Descomposición en factores primos

Hola buenas, tengo que realizar este programa con procedimientos y funciones y diseño descendente.

Lo que tengo es lo siguiente, pero no me acaba de salir:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void leernumero(unsigned& n){
  5.     do{
  6.     cout << "Introduzca un numero n>0 para hallar su descomposición en factores primos: ";
  7.     cin >> n;
  8.     }while (n<=0);
  9. }
  10.  
  11. unsigned factores(unsigned n){
  12.     unsigned cont=2;
  13.     if (n>1) {
  14.     while (n%cont==0){
  15.         if (n%cont!=0){
  16.             cont=cont+1;
  17.             }
  18.         n=n%cont;
  19.         cout << cont <<"·";
  20.         }
  21.  
  22.     }else if (n==1){
  23.     cout << "1";
  24.     }
  25.  
  26. }
  27. int main(){
  28.     unsigned n;
  29.  
  30. leernumero(n);
  31.  
  32. cout << "Los primos divisores de " << n <<" son: " << factores(n);
  33.  
  34.  
  35. return 0;
  36. }

En la línea 26 da el siguiente error: control reaches end of non-void function
Si alguien me puede ayudar se lo agradecería.
Saludos.

Lo he modificado y ahora tengo esto:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void leernumero(int& n){
  5.     do{
  6.     cout << "Introduzca un numero n>0 para hallar su descomposición en factores primos: ";
  7.     cin >> n;
  8.     }while (n<=0);
  9. }
  10.  
  11. unsigned factores(unsigned n){
  12.     unsigned cont=2;
  13.     if (n>1) {
  14.     while (n%cont==0){
  15.         if (n%cont!=0){
  16.             cont=cont+1;
  17.  
  18.         }
  19.         n=n/cont;
  20.         cout << cont << "·";
  21.         }
  22.  
  23.     }else if (n==1){
  24.     cout << "1";
  25.     }
  26.  
  27.     return cont;
  28. }
  29.  
  30. int main(){
  31.     int n;
  32.  
  33. leernumero(n);
  34.  
  35. cout << "Los primos divisores de " << n <<" son: ";
  36. factores(n);
  37.  
  38. return 0;
  39. }

Ya no me da error pero no me resuelve bien el problema; por ejemplo en el caso de que introduzca el numero 10 sale:

Introduzca un numero n>0 para hallar su descomposición en factores primos: 10
Los primos divisores de 10 son: 2·

Hay termina el programa; creo que es por el return de la linea 27.
Muchas gracias.

Última edición por juangebeboz; 05/12/2011 a las 07:24