Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda ...:P

Estas en el tema de Ayuda ...:P en el foro de C/C++ en Foros del Web. hola a todos!! bueno mi problema es el siguiente estoy haciendo una función q ...me tiene que generar "n"... números mágicos...el profesor nos dijo que ...
  #1 (permalink)  
Antiguo 08/09/2008, 21:57
 
Fecha de Ingreso: agosto-2008
Ubicación: Mi casa!!! Perú-Aqp
Mensajes: 28
Antigüedad: 15 años, 9 meses
Puntos: 0
Ayuda ...:P

hola a todos!!
bueno mi problema es el siguiente estoy haciendo una función q ...me tiene que generar "n"... números mágicos...el profesor nos dijo que un número mágico es aquel que sumando sus divisores menos el mismo ....es el mismo número...ejemplo

divisores números
1 + 2 + 3 = 6
1 + 2 + 4 + 7 + 14 = 28

ya entonces yo hice mi código... hice una función que me dice si un número es mágico o no ....y a partir de esto en otra funcion estoy generando los mágicos ...pero algo anda mal creo ......porque si le pongo que quiero 4 magicos me salen los cuatro .le pongo 5 y ahi se queda el programa ...la verdad no le encuentro el error haber si me ayudan ...gracias!!

bool magicoss(int n)
{
int d;
int magico=0;
for(int i=1; i<n;i++)
{
d=n/i;

if(n%i==0)
{

magico=magico+i;

}

}
if(magico==n)
return true ;
else
return false;


}

void generarmagicos(int y)
{
int cont=0;
for(int i=1;cont<y;i++)
if(magicoss(i)==1)
{
cout<<i<<endl;
cont++;
}
}

int main()
{
int x;
cout<<"Ingrese numero"<<endl;
cin>>x;
generarmagicos(x);
}
  #2 (permalink)  
Antiguo 09/09/2008, 06:12
Avatar de WaRc3L  
Fecha de Ingreso: agosto-2008
Ubicación: My House
Mensajes: 89
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Ayuda ...:P

Bueno, un numero magico, se podria considerar un numero perfecto... es lo mismo

Lo que tienes que hacer, es conseguir todos los divisores, y despues sumarlos, es facil.


Creas una variable, con valor zero, que vaya sumando los divisores, y el mismo.

Me explico:

Código:
Magico = Magico + Resultado_De_La_Division.
El Resultado_De_La_Division, el residuo ( % ) tiene que ser 0, eso quiere decir:

Código:
Modulo_De_La_Division = Divisor % Valor_Principal

if (Modulo_De_La_Division == 0 )
{
    Resultado_De_La_Division = Divisor / Valor_Principal;
    Magico = Magico + Resultado_De_La_Division.
}
El codigo 2, se tiene que repetir varias veces, quantas? pues, haz un ejemplo:

24 = 1 + 2 + 4 + 7 + 14

Como podras contar, hay 5 valores diferentes, y todos estos valores, son diferentes, pero, en realidad, tendrian que ser 6! ( contando el Valor principal ).

Esto quiere decir, que el bucle se va repetiendo, hasta que el Divisor sea igual a 24.

Bien, esto es todo, el final de todo, tienes que comparar el valor Magico con el Valor principal, si es verdadero, el numero es magico, si no, no lo es.

Saludos!Espero que te haya ayudado en algo!
__________________
Habla tu lenguaje favorito! Habla C++!

Última edición por WaRc3L; 09/09/2008 a las 07:24
  #3 (permalink)  
Antiguo 09/09/2008, 19:52
 
Fecha de Ingreso: agosto-2008
Ubicación: Mi casa!!! Perú-Aqp
Mensajes: 28
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda ...:P

gracias!! warcel !!
mi funcion bool magicoss hace eso va sumando los divisores y pregunta si es o no magico y retorna true o false de acuerdo al caso
....ahora la funcion q sigue es la de generar n magicos en esa tenia el problema ...
pero el codigo que hice funciona bien hoy lo presente al profesor...bueno toda la clases tuvo el mismo problema q al pedir que muestre 5 numeros magicos se demora demasiado en compilar pero si funciona .......:)
gracias por tomarte el tiempo!!!! :)
  #4 (permalink)  
Antiguo 10/09/2008, 07:06
Avatar de WaRc3L  
Fecha de Ingreso: agosto-2008
Ubicación: My House
Mensajes: 89
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Ayuda ...:P

De nada zare, me alegro que te haya ayudado

Saludos!
__________________
Habla tu lenguaje favorito! Habla C++!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:15.