Cargar un arreglo con elementos no repetidos en Ruby. [SOLUCIONADO]

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: maiku, akodo

Responder
ExpLin_11
Forista Nuevo
Forista Nuevo
Mensajes: 35
Registrado: Dom Nov 13, 2011 10:28 pm

Cargar un arreglo con elementos no repetidos en Ruby. [SOLUCIONADO]

Mensaje por ExpLin_11 »

Hola a todos.

La pregunta seria como puedo cargar un arreglo con 8 elementos no repetidos en Ruby, osea lo que quiero es que a medida que voy introduciendo los números si coincide con alguno ya cargado previamente me vuelva a pedir otro numero hasta completar los 8 elementos no repetidos.

Tengo una idea de como hacerlo, pero no funciona, a medida que voy ingresando el numero que sea se queda pidiendo mas números en un ciclo que no termina mas. Este es el código que estaba haciendo:

Código: Seleccionar todo

a=[]
i=0
begin
	puts "Ingresar numeros: "
	begin
		num=gets.chomp.to_i
	end until num>=1 and num <=10
		
	if i==1 then
		a[i]=num
		enc=false
	else
		j=1
		enc=false
		begin
			if a[j]=num
				enc=true
			end
			j=j+1
		end until j>1
	end
	if enc==false then
		a[i]=num
		i=i+1
	end
end until i<=8 
Gracias.
Última edición por ExpLin_11 el Mié Jul 18, 2012 7:03 pm, editado 1 vez en total.

Snark1994
Forista Menor
Forista Menor
Mensajes: 76
Registrado: Sab Abr 02, 2011 11:43 pm

Re: Cargar un arreglo con elementos no repetidos en Ruby.

Mensaje por Snark1994 »

¿Como esto?

Código: Seleccionar todo

#!/usr/bin/env ruby
a=[]

begin
        puts "Ingresar numero #{a.length + 1}: " 
        begin
                num = gets.chomp.to_i
        end until 1 <= num and num <= 10 and not a.include?(num)
        a.push(num)
end until a.length >= 8 #se espera que no será nunca más que 8, pero es aconsejable por si acaso
De todos modos, en tu código dices "if a[j]=num" que debe ser "if a[j]==num", dices "end until j>1" que debe ser "end until j>i" (pienso) y finalmente dices "end until i<=8" que debe ser "end until i >= 8"

Espero que te he ayudado
No soy hispanohablante - si he cometido un error con mi español, dime por favor :) me gustaría mejorarlo

ExpLin_11
Forista Nuevo
Forista Nuevo
Mensajes: 35
Registrado: Dom Nov 13, 2011 10:28 pm

Re: Cargar un arreglo con elementos no repetidos en Ruby.

Mensaje por ExpLin_11 »

Snark1994 escribió: De todos modos, en tu código dices "if a[j]=num" que debe ser "if a[j]==num", dices "end until j>1" que debe ser "end until j>i" (pienso) y finalmente dices "end until i<=8" que debe ser "end until i >= 8"
Tenes razón, fue un tonto error mio. Acá como queda:

Código: Seleccionar todo

a=[]
i=0
puts "Ingresar numeros: "
begin
	begin
		num=gets.chomp.to_i
	end until num>=1 and num <=10
		
	if i==1 then
		a[i]=num
		enc=false
	else
		j=1
		enc=false
		begin
			if a[j]==num
				enc=true
			end
			j=j+1
		end until j>1
	end
	if enc==false then
		a[i]=num
		i=i+1
	end
end until i>=8 

puts "El vector cargado quedaria: "

for i in 0..8
	puts a[i]
end
Gracias.

Snark1994
Forista Menor
Forista Menor
Mensajes: 76
Registrado: Sab Abr 02, 2011 11:43 pm

Re: Cargar un arreglo con elementos no repetidos en Ruby. [SOLUCIONADO]

Mensaje por Snark1994 »

De nada :)
No soy hispanohablante - si he cometido un error con mi español, dime por favor :) me gustaría mejorarlo

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje