Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Saito_25 en 4 Abril 2015, 21:29 pm



Título: [Ruby] Dónde está el fallo.
Publicado por: Saito_25 en 4 Abril 2015, 21:29 pm
Lo primero, etiqueta GeSHi, que sino se me olvida:

Código
  1. class Numeros_Infernales
  2. def initialize
  3. num = 0
  4. numeros = []
  5. salir = "no"
  6. while salir != "Exit"
  7. palabra_ingresada = gets.chomp
  8. if palabra_ingresada != "Exit"
  9. palabra_ingresada = palabra_ingresada.to_f
  10. if palabra_ingresada <= 0 || palabra_ingresada >= 0
  11. numeros.push(palabra_ingresada)
  12. else
  13. puts "No has introducido un valor válido"
  14. end
  15. else
  16. salir = "Exit"
  17. end
  18. end
  19. end
  20. end
  21. objeto = Numeros_Infernales.new()
  22. gets


Bien, el problema: No tengo ni idea.

Me da error y creo que es en el segundo condicional, este:

Código
  1. if palabra_ingresada <= 0 || palabra_ingresada >= 0
  2. numeros.push(palabra_ingresada)
  3. else
  4. puts "No has introducido un valor válido"
  5. end


Sencillamente quiero que el usuario pueda ingresar valores hasta que ponga "Exit", entonces, cuando ese valor se ha ingresado, transferirlo a un arreglo, vector, array, cómo quiera que se llame, y más a delante haré cálculos con esos números, pero por ahora, consigo ingresar los valores sin que me salgan 1000 fallos por línea de código que pongo.  :rolleyes:

Gracias por vuestra ayuda.


Título: Re: [Ruby] Dónde está el fallo.
Publicado por: Slava_TZD en 4 Abril 2015, 21:42 pm
Lo primero, etiqueta GeSHi, que sino se me olvida:


class Numeros_Infernales
   def initialize
      num = 0
      numeros = []
      salir = "no"
      while salir != "Exit"
         palabra_ingresada = gets.chomp
         if palabra_ingresada != "Exit"
            palabra_ingresada = palabra_ingresada.to_f
            if palabra_ingresada <= 0 || palabra_ingresada >= 0
               numeros.push(palabra_ingresada)
            else
               puts "No has introducido un valor válido"
            end
         else
            salir = "Exit"
         end
      end
   end
end
objeto = Numeros_Infernales.new()
gets


Bien, el problema: No tengo ni idea.

Me da error y creo que es en el segundo condicional, este:

if palabra_ingresada <= 0 || palabra_ingresada >= 0
               numeros.push(palabra_ingresada)
            else
               puts "No has introducido un valor válido"
            end



El puto amo XDDDDDDDDDDD

Ahora en serio que manual, vídeo o tutorial estás siguiendo?


Título: Re: [Ruby] Dónde está el fallo.
Publicado por: Usuario Invitado en 4 Abril 2015, 22:17 pm
Código
  1. if palabra_ingresada <= 0 || palabra_ingresada >= 0
  2.               numeros.push(palabra_ingresada)

¿Estás intentando agregar números a un array siempre y cuando sea diferente a 0? Porque eso es lo que hace la condición anterior. Otra cosa, ¿podrías decir qué error te muestra? Si no estamos adivinando.


Título: Re: [Ruby] Dónde está el fallo.
Publicado por: Saito_25 en 4 Abril 2015, 22:40 pm
Vamos por parte, estoy poniendo la etiqueta esa, GeSHi, pero no veo que funcione. Soy solo yo, ¿o vosotros tampoco la veis?

Ahora bien, manual, muchos. He seguido uno que me pasó un usuario de esta comunidad, que era online, y con lo que he sacado de ahí, lo estoy intentando hacer lo que me he propuesto. Seguro que tengo fallos en todas partes, y de todo tipo, seguro que se puede hacer mucho más simple y sin comerse tanto la cabeza, pero, mi cara actual es esta:  :huh: así que, ni de coña lo puedo hacer mejor.

Lo que yo quiero es agregar a un array un valor numérico introducido por un usuario. Ese valor puede ser 0. Por eso pongo menor o igual, mayor o igual. Para que si me da 0 o un número menor o mayor se agregue. Al menos creo que es así como se debe hacer, no lo sé.

Fallo recibido:
Desde Sublime Text 2, al pulsar f7:
C:/Users/Manuel/Documents/Ruby/nombre.rb:13: invalid multibyte char (US-ASCII)
C:/Users/Manuel/Documents/Ruby/nombre.rb:13: invalid multibyte char (US-ASCII)
C:/Users/Manuel/Documents/Ruby/nombre.rb:13: syntax error, unexpected $end, expecting keyword_end
               puts "No has introducido un valor válido"

Al ejecutar el archivo .rb no tengo ni idea de qué sale, ya que se cierra la ventana nada más abrirla...


Título: Re: [Ruby] Dónde está el fallo.
Publicado por: Eleкtro en 4 Abril 2015, 22:46 pm
Ni he leido la pregunta ni los comentarios

Saito_25, ¿que broma es esta ya?, ¿que motivo te impide respetar las normas del foro?, yo y otros compañeros ya te hemos avisado muchas veces.

Cualquier comentario que hagas sin usar las etiquetas geshi será eliminado, no bloqueado, y si la burla sigue se reportará la petición de baneo, no hay más que hablar.

Tema cerrado.

Tema reabierto a petición del OP.


Título: Re: [Ruby] Dónde está el fallo.
Publicado por: Eleкtro en 5 Abril 2015, 00:02 am
Trata de mostrar el error que tengas, cómo te han comentado no somos adivinos.

Deduzo que te da un error del tipo Invalid multibyte char (UTF-8) en esta linea:
Citar
Código
  1. puts "No has introducido un valor válido"
la á.

Si ese es el error al que te refieres, el motivo es porque estás utilizando un set de caracteres incompatible con al set de caracteres de la codificación que tengas declarada en la cabecera de tú script,
cómo no tienes ninguna codificación declarada en el script que has mostrado, por defecto Ruby 2.x utiliza la codificación UTF-8 (en Ruby 1.x es ASCII).

Añade esto en la cabecera del script:
Código
  1. # -*- coding: WINDOWS-1252 -*-

Saludos


Título: Re: [Ruby] Dónde está el fallo.
Publicado por: Saito_25 en 5 Abril 2015, 00:07 am
Intenté buscar entre los iconos alguna cara que expresara la mía, pero... no pude encontrarla, supongo que esta es la que más se le acerca   :-X.

Bueno, hace poco bajé de la versión de Ruby 2.no sé que a la 1.9 En la versión 2.no sé que, parece que si se puede poner tildes... Si no me lo llegas a decir, estoy liado con esto años.

Bien, disculpad las molestias.


Título: Re: [Ruby] Dónde está el fallo.
Publicado por: Eleкtro en 5 Abril 2015, 00:11 am
No me ha quedado del todo claro jeje, ¿entonces ese era el error al que te referías?

Saludos!


Título: Re: [Ruby] Dónde está el fallo.
Publicado por: Saito_25 en 5 Abril 2015, 00:18 am
Yo antes tenía la última versión de Ruby, en esa puedes agregarle tildes a las palabras sin ningún problema. Es más, después en la consola te las muestra.

Pero como quiero crear juegos, me bajé a la versión 1.9 y en esa, por lo visto, no se puede agregar tildes.

En fin, le quité la tilde al string, ya que aunque con tu código me sirvió el programa, las tildes se mostraban... de una forma muy rara, y ya funcionó perfectamente. Quedó esto:

Código
  1. class Numeros_Infernales
  2. def initialize
  3. numeros = []
  4. salir = "no"
  5. while salir != "Exit"
  6. pal = gets.chomp
  7. if pal != "Exit"
  8. pal = pal.to_f
  9. if pal > 0 || pal < 0
  10. numeros.push(pal)
  11. end
  12. else
  13. salir = "Exit"
  14. end
  15. end
  16. numeros.each {|numero| puts numero ** 2}
  17. end
  18. end
  19. objeto = Numeros_Infernales.new()
  20. gets