17 - Arreglos: búsqueda de elementos

El primer método que nos permite buscar si existe un valor en el Array es include?

El método include? retorna true si el elemento se encuentra en el Array y false en caso contrario.

Problema 1:

Cargar en un arreglo 5 enteros por teclado, luego ingresar otro valor entero y verificar si dicho valor se encuentra en el Array.

Programa: ejercicio079.rb

arreglo = []
x = 0
while x < 5
  print "Ingrese un valor entero:"
  valor = gets.to_i
  arreglo << valor
  x = x + 1
end
puts "Contenido del arreglo: #{arreglo}"
print "Ingrese un valor a buscar en el Array anterior:"
valor = gets.to_i
if arreglo.include?(valor)
  puts "El número #{valor} se encuentra contenido en el arreglo"
else
  puts "El número #{valor} no se encuentra contenido en el arreglo"  
end

Luego de cargar los 5 elementos del Array procedemos a cargar un entero:

print "Ingrese un valor a buscar en el Array anterior:"
valor = gets.to_i

Llamamos al método include? y le pasamos como parámetro el valor a buscar, si retorna true significa que lo encontró:

if arreglo.include?(valor)
  puts "El número #{valor} se encuentra contenido en el arreglo"
else
  puts "El número #{valor} no se encuentra contenido en el arreglo"  
end

El segundo método de la clase Array que nos permite verificar si existe un determinado valor se llama index y nos retorna en el caso que lo encuentre la posición que ocupa dentro del Array y si no lo encuentra retorna nil.

Problema 2:

Cargar en un arreglo 5 enteros por teclado, luego ingresar otro valor entero y verificar si dicho valor se encuentra en el Array y en que posición se encuentra.

Programa: ejercicio080.rb

arreglo = []
x = 0
while x < 5
  print "Ingrese un valor entero:"
  valor = gets.to_i
  arreglo << valor
  x = x + 1
end
puts "Contenido del arreglo: #{arreglo}"
print "Ingrese un valor a buscar en el Array anterior:"
valor = gets.to_i
posicion = arreglo.index(valor)
if posicion == nil
  puts "El número #{valor} no se encuentra contenido en el arreglo"    
else
  puts "El número #{valor} se encuentra contenido en el arreglo en la posición #{posicion}"
end

Llamamos al método index pasando como parámetro el valor a buscar, en la variable posición guardamos el valor devuelto por el método index:

posicion = arreglo.index(valor)

Si se almacena el valor nil significa que no lo ha encontrado dentro del Array. Si lo encuentra la función index al valor retorna la posición donde se ubica:

if posicion == nil
  puts "El número #{valor} no se encuentra contenido en el arreglo"    
else
  puts "El número #{valor} se encuentra contenido en el arreglo en la posición #{posicion}"
end

Problema propuesto

  • Crear y cargar dos Arrays con los nombres de 5 productos en uno y sus respectivos precios en otro.Ingresar por teclado luego el nombre de un producto y mostrar su precio en el caso que exista.
Solución
ejercicio081.rb

productos = []
precios = []
x = 0
while x < 5
  print "Ingrese el nombre del producto:"
  nom = gets.chomp
  productos << nom
  print "Ingrese el precio del producto:"
  valor = gets.to_f
  precios << valor
  x = x + 1
end
print "Ingrese el nombre de un producto a buscar:"
nom = gets.chomp
posicion = productos.index(nom)
if posicion == nil
  puts "No existe un producto con dicho nombre"
else
  puts "El producto #{nom} tiene un precio de #{precios[posicion]}"
end