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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Programa para hallar números amigos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Programa para hallar números amigos  (Leído 22,454 veces)
Charderak

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Programa para hallar números amigos
« en: 25 Junio 2010, 19:50 pm »

Hola, tengo un problemilla haciendo este programa, tengo ya el código y no me da problemas al compilar, pero a la hora de ejecutarlo no hace nada, y no sé dónde puede estar el fallo. Os dejo el enunciado de la práctica para que entendáis qué estoy haciendo y el código, muchas gracias!

Enunciado:

Dos números a y b se dicen que son amigos si la suma de los divisores de a (salvo él mismo)
coincide con b y viceversa.
El menor par de números amigos es el formado por el 220 y el 284, ya que:
Suma de divisores de 220 (excepto 220): 1+2+4+5+10+11+20+22+44+55+110=284.
Suma de divisores de 284 (excepto 284): 1+2+4+71+142=220.
Otros números amigos son 2620 y 2924, 6232 y 6368, 17296 y 18416, 9363584 y 9437056.
Escribe un programa que tenga como entrada dos números naturales n y m y muestre en
pantalla todas las parejas de números naturales que existan en el intervalo [n, m].

Código:

   
Código
  1. PROGRAM PRACTICA4
  2. INTEGER a, b, i, j, n, m, s, t
  3. PRINT *, 'Introduzca el número n (el menor)'
  4. READ *, n
  5. PRINT *, 'Introduzca el número m (el mayor)'
  6. READ *, m
  7. DO WHILE (n<m)
  8. DO i=1, n/2
  9. a=MOD(n,i)
  10. IF (a==0) THEN
  11. s=s+i
  12. END IF
  13. END DO
  14. DO j=1, m/2
  15. b=MOD(m,j)
  16. IF (b==0) THEN
  17. t=t+j
  18. END IF
  19. END DO
  20. IF (s==t) THEN
  21. PRINT *, n, ' y ', m, ' son amigos'
  22. END IF
  23.                n=n+1
  24. END DO
  25. END


« Última modificación: 27 Junio 2010, 05:18 am por Charderak » En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Programa para hallar números amigos
« Respuesta #1 en: 25 Junio 2010, 20:59 pm »

Primero no has dicho ni que lenguaje es ni nada por ele stilo, segundo ni has enmarcado el codigo ni que sea con quotes.

Usa geshi que por algo esta, y me comprometo a ayudarte.

Saludos


En línea

Charderak

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Programa para hallar números amigos
« Respuesta #2 en: 26 Junio 2010, 04:10 am »

El lenguaje es Fortran, en cuanto a lo del "geshi" lo siento, pero no sé lo que es, lo he agrupado en colorines, en azul marino el ciclo DO WHILE principal, y en verde y negro los ciclos DO internos dentro del ciclo DO WHILE

Las instrucciones las he puesto en rojo
En línea

.:WindHack:.

Desconectado Desconectado

Mensajes: 167

Prisionero de mi propia mente...


Ver Perfil WWW
Re: Programa para hallar números amigos
« Respuesta #3 en: 26 Junio 2010, 04:31 am »

El lenguaje es Fortran, en cuanto a lo del "geshi" lo siento, pero no sé lo que es, lo he agrupado en colorines, en azul marino el ciclo DO WHILE principal, y en verde y negro los ciclos DO internos dentro del ciclo DO WHILE

Las instrucciones las he puesto en rojo

Se refiere a usar las etiquetas de código:

[code=fortran]/* Aquí el código del programa... */[/code]
En línea

Follow me on Twitter: @windhack | Visit my website: www.daw-labs.com

"The only thing they can't take from us are our minds."
Charderak

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Programa para hallar números amigos
« Respuesta #4 en: 26 Junio 2010, 17:57 pm »

Listo, muchas gracias y a ver si así se anima alguien a echarme una mano :P
En línea

cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Programa para hallar números amigos
« Respuesta #5 en: 26 Junio 2010, 18:16 pm »

La verdad no conozco fortran, Pero lo que veo que puede traer fallas es que a s y t no los inicializaste. Ahora bien, no te deja ni siquiera leer los datos desde stdin?
En línea

Charderak

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Programa para hallar números amigos
« Respuesta #6 en: 26 Junio 2010, 19:07 pm »

No es eso, en Fortran no hace falta inicializar las variables. Lo de stdin la verdad es que no entiendo a qué te refieres, pero el programa arrancar arranca y me pide los valores de n y m, pero al introducirlos ya no hace nada más
En línea

cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Programa para hallar números amigos
« Respuesta #7 en: 27 Junio 2010, 04:59 am »

En realidad ahora que lo miro con detenimiento:

Código:
DO WHILE (n<m)

En el rango del bucle, nunca modificas esos valores, no será más precisamente un

Código:
if(n<m)

 :huh:
En línea

Charderak

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Programa para hallar números amigos
« Respuesta #8 en: 27 Junio 2010, 05:21 am »

En realidad ahora que lo miro con detenimiento:

Código:
DO WHILE (n<m)

En el rango del bucle, nunca modificas esos valores, no será más precisamente un

Código:
if(n<m)

 :huh:

Llevas razón, lo he corregido añadiendo un n=n+1 antes de cerrar el ciclo DO WHILE. Ahora sí "termina" de ejecutarse, pero no me aparece nada, sólo me pide los números y ya me sale lo de Press any key to continue, y estoy poniendo un intervalo donde sé seguro que hay al menos dos números "amigos", así que hay algo que está mal :(
En línea

cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Programa para hallar números amigos
« Respuesta #9 en: 27 Junio 2010, 14:38 pm »

En realidad ahora que leo el problema, el bucle sería:

Código:
do(n <= m)

Ya que es un intervalo cerrado.

Ahora bien, en el rango del bucle, la lógica está bien. Depuralo.

Por otra parte te recomienda que al problema le falto algo, recuerda esto : "programa que muestre TODAS las parejas".
« Última modificación: 27 Junio 2010, 14:43 pm por cbug » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines