Un arreglo en Ruby es una estructura dinámica (es decir puede ir agregando y eliminando elementos durante la ejecución del programa)
Hemos visto que podemos definir un arreglo por asignación indicando entre corchetes los valores a almacenar:
arreglo = [10, 20, 40]
Un arreglo luego de definida podemos agregarle nuevos elementos a la colección. La primera forma que veremos para que nuestro arreglo crezca es utilizar el operador <<:
arreglo = [10, 20, 30] puts arreglo.length # imprime un 3 arreglo << 100 puts arreglo.length # imprime un 4 puts arreglo[0] # imprime un 10 puts arreglo[3] # imprime un 100
Definimos un arreglo con tres elementos:
arreglo = [10, 20, 30]
Imprimimos la cantidad de elementos que tiene el arreglo, en nuestro caso lo definimos con 3:
puts arreglo.length # imprime un 3
Agregamos una nuevo elemento al final del arreglo:
arreglo << 100
Si llamamos nuevamente al método length ahora retorna un 4:
puts arreglo.length # imprime un 4
Imprimimos ahora el primer y cuarto elemento del arreglo (recordar que se numeran a partir de cero):
puts arreglo[0] # imprime un 10 puts arreglo[3] # imprime un 100
Definir arreglo vacío y luego solicitar la carga de 5 enteros por teclado y añadirlos al arreglo. Imprimir luego el arreglo completo.
#definimos una arreglo vacío arreglo = [] x = 0 while x < 5 print "Ingrese un valor entero:" valor = gets.to_i arreglo << valor x = x + 1 end print arreglo
El algoritmo propuesto crea primero un arreglo vacío (debemos asignar los corchetes de apertura y cerrado sin contenido):
arreglo = []
Luego mediante un while solicitamos en forma sucesiva la carga de un entero por teclado y procedemos a agregarlo al final del arreglo:
x = 0 while x < 5 print "Ingrese un valor entero:" valor = gets.to_i arreglo << valor x = x + 1 end
Finalmente mostramos los elementos del arreglo en forma completo:
print arreglo
Realizar la carga de valores enteros por teclado, almacenarlos en un arreglo. Finalizar la carga de enteros al ingresar el cero. Mostrar finalmente el tamaño del arreglo y sus elementos.
arreglo = [] loop do print "Ingresar valor (0 para finalizar):" valor = gets.to_i if valor == 0 break end arreglo << valor end puts "Tamano del arreglo: #{arreglo.length}" puts "Elementos del arreglo #{arreglo}"
En este problema el arreglo crecerá hasta que el operador ingrese el valor cero.
Dentro del ciclo loop do procedemos a cargar un valor entero. Si se ingresa un cero cortamos el ciclo repetitivo sino procedemos a añadirlo al arreglo mediante el operador << :
loop do print "Ingresar valor (0 para finalizar):" valor = gets.to_i if valor == 0 break end arreglo << valor end
Cuando salimos del ciclo repetitivo procedemos a obtener el tamaño del arreglo y mostrar sus elementos:
puts "Tamano del arreglo: #{arreglo.length}" puts "Elementos del arreglo #{arreglo}"
En Ruby hay actividades que se pueden realizar de muchas formas. El agregado de un elemento a un arreglo además de utilizar el operador << se puede hacer llamando al método push:
#definimos una arreglo vacío arreglo = [] x = 0 while x < 5 print "Ingrese un valor entero:" valor = gets.to_i arreglo.push(valor) x = x + 1 end print arreglo
ejercicio064.rb sueldos = [] suma=0 x = 0 while x < 5 print "Ingrese el sueldo del operario:" valor = gets.to_f sueldos << valor suma = suma + valor x = x + 1 end puts "Listado de sueldos: #{sueldos}" promedio = suma / 5 puts "Promedio de sueldos #{promedio}" ejercicio065.rb alturas = [] suma = 0 x = 0 while x < 5 print"Ingrese la altura:" valor = gets.to_f alturas << valor suma = suma + valor x = x + 1 end puts "Las alturas ingresadas son #{alturas}" promedio = suma / 5 puts "El promedio de las alturas es #{promedio}" altas = 0 bajas = 0 x = 0 while x < 5 if alturas[x] > promedio altas = altas + 1 else if alturas[x]<promedio bajas = bajas + 1 end end x = x + 1 end puts "La cantidad de personas mas bajas al promedio es #{bajas}" puts "La cantidad de personas mas altas al promedio es #{altas}" ejercicio066.rb sueldos_man = [] puts "Sueldos turno manana" x = 0 while x < 4 print"Ingrese sueldo:" valor = gets.to_f sueldos_man << valor x = x + 1 end sueldos_tar = [] puts "Sueldos turno tarde" x = 0 while x < 4 print"Ingrese sueldo:" valor = gets.to_f sueldos_tar << valor x = x + 1 end puts "Turno mañana #{sueldos_man}" puts "Turno tarde #{sueldos_tar}"