[Ruby] Dónde está el fallo.

Iniciado por Saito_25, 4 Abril 2015, 21:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Saito_25

Lo primero, etiqueta GeSHi, que sino se me olvida:

Código (ruby) [Seleccionar]
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:

Código (ruby) [Seleccionar]
if palabra_ingresada <= 0 || palabra_ingresada >= 0
numeros.push(palabra_ingresada)
else
puts "No has introducido un valor válido"
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.

Slava_TZD

Cita de: Saito_25 en  4 Abril 2015, 21:29 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?


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.

Usuario Invitado

Código (ruby) [Seleccionar]
if palabra_ingresada <= 0 || palabra_ingresada >= 0
               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.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

Saito_25

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...

Eleкtro

#4
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.








Eleкtro

#5
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 (ruby) [Seleccionar]
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 (ruby) [Seleccionar]
# -*- coding: WINDOWS-1252 -*-

Saludos








Saito_25

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.

Eleкtro

No me ha quedado del todo claro jeje, ¿entonces ese era el error al que te referías?

Saludos!








Saito_25

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 (ruby) [Seleccionar]
class Numeros_Infernales
def initialize
numeros = []
salir = "no"
while salir != "Exit"
pal = gets.chomp
if pal != "Exit"
pal = pal.to_f
if pal > 0 || pal < 0
numeros.push(pal)
end
else
salir = "Exit"
end
end
numeros.each {|numero| puts numero ** 2}
end
end
objeto = Numeros_Infernales.new()
gets