class MatrizDispersa

Public Class Methods

new(filas, columnas, velementos) click to toggle source
Calls superclass method Matriz::new
# File lib/prac09/matrizdispersa.rb, line 4
def initialize(filas, columnas, velementos)
        super(filas, columnas)
        @vvalores= Array.new 
        @vfil= Array.new
        @vcol = Array.new

        longitud=(@filas*@columnas)
        i=0
        while(i<longitud)

                if(velementos[i]!=0)

                @vvalores<< (velementos[i])
                @vfil << (i/@columnas)
                @vcol<< (i%@columnas)
                end
                i=i+1
        end
end

Public Instance Methods

[](f,c) click to toggle source
# File lib/prac09/matrizdispersa.rb, line 24
def [](f,c)
        no_nulo = @vvalores.size
        i=0
        while(i < no_nulo)

                if (@vfil[i] == f && @vcol[i] == c)
                        return @vvalores[i]
                end
                i=i+1
        end
        return 0 
end
[]=(i,j,nvalor) click to toggle source
# File lib/prac09/matrizdispersa.rb, line 37
def []= (i,j,nvalor) #setter
        ind = 0
        while ind<@vvalores.size
                if (i == @vfil[ind] && j == @vcol[ind] && nvalor != 0) #para poner un nuevo valor no nulo
                        @vvalor[ind]=nvalor
                        return
                end
                if (i == @vfil[ind] && j == @vcol[ind] && nvalor == 0)       #para poner un nuevo valor nulo en una posicion ocupada anteriormente
                        @vvalores.delete_at(ind)                                                            #simplemente eliminamos el valor que habia antes pues los nulos no se almacenan
                        @vfil.delete_at(ind)
                        @vcol.delete_at(ind)
                        return
                end
                ind += 1
        end #si la posicion no existia la anyadimos con el correspondiente valor
        @vvalores << (nvalor)
        @vfil << (i)
        @vcol << (j)
        
end