Ruby - Ayuda con tabulador en Ruby

 
Vista:
sin imagen de perfil

Ayuda con tabulador en Ruby

Publicado por Novato (3 intervenciones) el 14/10/2014 01:00:49
Estimados, tengo un código en Ruby que dado un número de personas, su nombre, edad y sexo, devuelve los nombres, edades, sumatoria de edades y promedios.
El código funciona bien desde el punto de vista de de ejecución, el problema que tengo es con los nombres de 8 caracteres o más, que me tabula mal la edad y género.

CAPTURA DE PANTALLA DE RESULTADO

xd8m01

Como ven el nombre Federico, queda destabulado en la edad y el genero.

Les dejo el código a ver que se puede hacer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class Ejercicio
      def initialize ()
      end
      def Desarrollo()
          suma_e = 0
          prom_e = 0
          c_m = 0
          c_f = 0
          puts "ingresar numero de personas:"
          STDOUT.flush  #el STDOUT nos ayudara a limpiar el valor de una variable
          n = gets.chomp
          n = n.to_i
          x = n-1
          a = Array.new
          b = Array.new
          c = Array.new
          for i in 0..x
              print "Persona ",i+1,"\n"
              print "Nombre: "
              a[i] = gets.chomp
              a[i] = a[i].to_s.capitalize
              printf "\n"
              print "Edad: "
              b[i] = gets.chomp
              b[i] = b[i].to_i
              printf "\n"
              print "Genero (M/F) : "
              c[i] = gets.chomp
              c[i] = c[i].to_s.capitalize!
              printf "\n"
          end
          print "-------------------------\n"
          puts "LISTA DE PERSONAS:"
          printf "\n"
          print "Nombre\t\tEdad\tGenero\n"
          print "\n"
          for i in 0..x
 
                print a[i],"\t", "\t",b[i],"\t",c[i],"\n"
       suma_e = suma_e+b[i]
            end
 
            for i in 0..x
       if (c[i]=="M")
       c_m=c_m+1
        else
       c_f=c_f+1
        end
            end
 
            print "-------------------------\n"
            prom_e = suma_e/n
        print "Sumatoria de edades:",suma_e,"\n"
        print "Promedio de edades:",prom_e,"\n"
        print "Cantidad de hombres:",c_m,"\n"
        print "Cantidad de mujeres:",c_f,"\n"
     end
  end
objeto = Ejercicio.new()
objeto.Desarrollo
gets()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder