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

[SOLUCIONADO] Numero perfecto mas cercano

Estas en el tema de Numero perfecto mas cercano en el foro de C/C++ en Foros del Web. Saludos. Me ha dado por tocar esto de los perfectos, he hecho ya lo que es encontrar el perfecto pero no le he dado con ...
  #1 (permalink)  
Antiguo 21/07/2015, 15:38
 
Fecha de Ingreso: julio-2015
Ubicación: San Juan
Mensajes: 7
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Numero perfecto mas cercano

Saludos.

Me ha dado por tocar esto de los perfectos, he hecho ya lo que es encontrar el perfecto pero no le he dado con la lógica de buscar el perfecto mas cercano.



digamos, por ejemplo, el usuario introduce el 22, y entre el 22 tengo como perfectos cercanos el 6 y el 28, pero el 28 es el perfecto mas cercano al numero introducido por el usuario, tengo la idea de (o bueno tenia) que con una función buscaba el perfecto mas cercano pero hacia atrás, y el perfecto mas cercano hacia adelante, pero aun así no lo he podido lograrlo, alguien puede ayudarme con esta parte del código?
  #2 (permalink)  
Antiguo 22/07/2015, 00:10
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Numero perfecto mas cercano

Claro que ayudamos... pon el código, indica dónde te estás atascando y te ayudaremos a solucionar tu problema.

Sin código no hay ayuda porque es una forma de verificar que lo que buscas es ayuda y no que te hagan el ejercicio (no me refiero a ti en concreto)

Un saludo.
  #3 (permalink)  
Antiguo 22/07/2015, 04:20
 
Fecha de Ingreso: julio-2015
Ubicación: San Juan
Mensajes: 7
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Numero perfecto mas cercano

Cita:
Iniciado por eferion Ver Mensaje
Claro, se me olvidaba, mira:


int perfectatras(int numero, int comparador, int divisor, int pat){

while(numero!=comparador){

numero=numero-1;

for(divisor=1; divisor<numero; divisor++){
if(numero%divisor==0){

comparador+=divisor;
}
}

return pat;
}
}




int perfectalante( int numero, int i ){

int comparador, pal;

while(numero!=comparador){

numero=numero+1;

for(i=1; i<numero; i++){
if(numero%i==0){

comparador+=i;

}
}
}

return pal;

}





int main() {
int i, numero, comparador=0, proxalante, proxatras;

printf("Introduzca el numero para ver si es perfecto: ");
scanf("%d", &numero);

for(i=1; i<numero; i++) {

if(numero%i==0) {
comparador+=i;
}
}

if(numero==comparador){
printf("El numero %d es perfecto.\n", numero); return 0;
} //desde aqui empieza el proceso de no perfecto buscando el mas cercano

if(numero!=comparador){


proxatras=perfectatras;
proxalante=perfectalante;

}



if(proxatras>proxalante){

printf("%d es el numero perfecto mas cercano", proxatras);
}
else{ printf(" %d es el numero perfecto mas cercano", proxalante);}















system("Pause");
return 0;
}


  #4 (permalink)  
Antiguo 22/07/2015, 04:47
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Numero perfecto mas cercano

Código C:
Ver original
  1. if(proxatras>proxalante)

Está claro que proxatras SIEMPRE va a ser menor que proxalante.

Si tienes los dos números perfectos (el inmediatamente anterior y el inmediatamente posterior), lo único que necesitas saber es que el más cercano es el que está a menos distancia del número introducido.

¿Cómo se calcula la distancia? Con una resta. Lo que tienes que hacer es calcular la distancia entre numero y proxatras y entre numero y proxalante. La menor de esas distancias (cuidado no te de una de ellas valores negativos... en cuyo caso tendrás que invertir los valores) te indicará qué número es más cercano al introducido.

Un saludo

Etiquetas: algoritmos, logica
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 16:32.