Foros-FIUBA Foros HostingPortal
 FAQ  •  Buscar  •  Wiki  •  Apuntes  •  Planet  •  Mapa  •  Eyeon  •  Chat
Preferencias  •  Grupos de Usuarios
Registrarse  •  Perfil  •  Entrá para ver tus mensajes privados  •  Login
Ver tema siguiente
Ver tema anterior

Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente
Autor Mensaje
ezequiel.grillo
Nivel 4



Registrado: 11 Abr 2011
Mensajes: 74

Carrera: Informática y Sistemas
argentina.gif
MensajePublicado: Jue Abr 14, 2011 2:10 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Otra cosa q no entiendo bien es porque haces numero div contador = 0


   OfflineGalería Personal de ezequiel.grilloVer perfil de usuarioEnviar mensaje privadoMSN Messenger
ezequiel.grillo
Nivel 4



Registrado: 11 Abr 2011
Mensajes: 74

Carrera: Informática y Sistemas
argentina.gif
MensajePublicado: Vie Abr 15, 2011 6:26 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

No quiero seguir jodiendo pero la verdad q no me sale el programa.
Trato de aplicar lo q me dijo kartlan pero me falla en el step y ya me estoy volviendo loko(nunka explicaron step).

Si alguno puede por favor poner el codigo como tendria q quedar maso menos el programa con la restriccion q me pide el profe se lo voy a agradecer.

Saludss


   OfflineGalería Personal de ezequiel.grilloVer perfil de usuarioEnviar mensaje privadoMSN Messenger
loonatic
Nivel 9


Edad: 32
Registrado: 16 May 2009
Mensajes: 1256

Carrera: Sistemas
CARRERA.sistemas.3.jpg
MensajePublicado: Vie Abr 15, 2011 9:05 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Hola ezequiel, mirá, yo de Pascal no se nada, pero te hice esto en Python, es super facil de entender (sintacticamente hablando), asi que espero que te sirva.
Lo que hace el programa es, luego de pedir un numero, hacer un "for" que vaya almacenando en un contador la sumatoria de sus divisores. Fijate que la sumatoria va de atrás para adelante (osea 100 = 50 + 25 + ...) porque pensé que así seria mas rapido. Cuando esta sumatoria es mayor al numero ingresado, el programa corta solo.
La verdad no sé cual es el orden computacional de este algoritmo, pero bueno, funcionar funciona.

Código:

def numero_perfecto():
   
   numero = input('Ingrese un numero: ')
   while numero<1> 10000:
      numero = input('El numero ingresado es invalido. Ingrese otro numero: ')

   sumatoria_divisores = 1
   for x in range (numero/2,2,-1):
      if (numero % x == 0):
         sumatoria_divisores = sumatoria_divisores + x
         if (sumatoria_divisores > numero):
            return 'El numero NO es perfecto.'
   return 'El numero es perfecto.'


No se porque no se ve bien... en la linea del while debe decir "while (numero menor a 1) or (numero mayor a 10000)"


Geminis Género:Femenino Cabra OfflineGalería Personal de loonaticVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Amadeo
Nivel 9



Registrado: 20 Oct 2008
Mensajes: 1436

Carrera: No especificada
blank.gif
MensajePublicado: Vie Abr 15, 2011 10:04 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Meeee parece que es O(n), pero no se calcular muy bien estas cosas (todavía).


 Género:Masculino  OcultoGalería Personal de AmadeoVer perfil de usuarioEnviar mensaje privado
Kartlan
Nivel 5


Edad: 42
Registrado: 09 Ago 2005
Mensajes: 176
Ubicación: Once
Carrera: Informática
argentina.gif
MensajePublicado: Vie Abr 15, 2011 10:09 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

ezequiel.grillo escribió:
Otra cosa q no entiendo bien es porque haces numero div contador = 0


Ups... era mod... y reitero... si usas internet y pones "pascal reference div" te van a salir tutoriales, si no le pones onda a encontrar la pagina de entre las m=100000000^100000 manuales en internet no vas a poder encontrar las m^m soluciones a los problemas que hay.

div: es el operador divisón entera. te trunca el resultado.
mod: es el operador resto de la división entera.

Y solo par las dudas que realmente te haga falta:
11/3 = 3,6...
11 div 3 = 3
11 mod 3 = 2
Se ve tambien que esto es cierto: A = B*(A div B) + (A mod B) ... para enteros...

En el post del "step" tambien esta como hacerlo con un while. Que es el step (step en ingles=> paso). Eso sale de leer la documentación y ver "internet decime que es el for de pascal" pero para hacerla corta; El for es una forma elegante de hacer un bucle e iterar un contador, así que cualquier for se puede escribir como un while, la artimaña del step es por que hay veces en que no queres mirar todos los numeros de un rango sino por ejemplo solo los pares, o los multiplos de 7 o algo así... no se por que cuesta tanto... es más si no sabes ingles... español(step) => paso; es el paso del for; es decir el incremento del contador del for...

espero que te sirva.


Aries Género:Masculino Gallo OfflineGalería Personal de KartlanVer perfil de usuarioEnviar mensaje privadoEnviar emailYahoo MessengerMSN Messenger
Kartlan
Nivel 5


Edad: 42
Registrado: 09 Ago 2005
Mensajes: 176
Ubicación: Once
Carrera: Informática
argentina.gif
MensajePublicado: Vie Abr 15, 2011 10:12 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

ezequiel.grillo escribió:
No entiendo porque si pongo 496 (q es otro numero perfecto) me pone q no es perfecto.
¿Cual seria la condicion final para q me diga si lo es o no?


Con todo respesto esta pregunta no tiene ni pies ni cabeza... Para corregir código hace falta verlo (y lejos estoy de querer que cuelgues todo un tp en el foro... por que es para tirar bits al techo) lo mejor (a la altura de algo1) es que pongas writeln y veas los valores de la variable... para este ejercicio con imprimir el valor de la suma antes de volver de la función ya te tiene que dar una idea de que esta fallando, otra es imprimir cada vez que sumas un primo el valor que estas sumando y la suma parcial.

Si me acuerdo bien el nombre del tema de "cortes de control" o imprimir todo bien bien cabeza y esperar que lograr entender que le estas diciendo mal a la maquina.


Aries Género:Masculino Gallo OfflineGalería Personal de KartlanVer perfil de usuarioEnviar mensaje privadoEnviar emailYahoo MessengerMSN Messenger
Mostrar mensajes de anteriores:      
Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente

Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro
No podés responder a temas en este foro
No podés editar tus mensajes en este foro
No podés borrar tus mensajes en este foro
No podés votar en encuestas en este foro
No Podéspostear archivos en este foro
No Podés bajar archivos de este foro


Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker
365 Attacks blocked.

Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods y Créditos

Foros-FIUBA está hosteado en Neolo.com Cloud Hosting

[ Tiempo: 0.2285s ][ Pedidos: 20 (0.1637s) ]