class ModaiPrct10::MatrizDispersa

Clase de Matriz dispersa

Attributes

columnas[R]
filas[R]
matriz[R]

Public Class Methods

new(matriz) click to toggle source

Inicialización

# File lib/modai_prct10.rb, line 172
def initialize(matriz)

        @matriz = matriz
        @filas = matriz.size
        @columnas = matriz.size

end

Public Instance Methods

+(o) click to toggle source

Suma de matrices

# File lib/modai_prct10.rb, line 239
def +(o)

        suma = Array.new(matriz.size - 1)
        for i in 0...matriz.size
              
                # creamos el hash
                if (matriz[i] != nil or o.matriz[i] != nil)

                        suma[i] = Hash.new()
        
                        case true

                                # Los dos tienen hash
                                when (matriz[i] != nil and o.matriz[i] != nil)
                        
                                        # cogemos matriz como base para la suma
                                        suma[i] = matriz[i]

                                        o.matriz[i].each do |key, value|
                        
                                                if suma[i].has_key?(key)
                                                      suma[i][key] = suma[i][key] + o.matriz[i][key]
                                                else
                                                        suma[i][key] = o.matriz[i][key]
                                                end

                                        end

                                # matriz tiene hash
                                when matriz[i] != nil
                                        suma[i] = matriz[i]                                               

                                # o hash
                                when o.matriz[i] != nil
                                        suma[i] = o.matriz[i]


                        end
                
                end

        end
        MatrizDispersa.new(suma)

end
-(o) click to toggle source

Resta de matrices

# File lib/modai_prct10.rb, line 286
def -(o)

        resta = Array.new(matriz.size - 1)
        for i in 0...matriz.size

                # creamos el hash
                if (matriz[i] != nil or o.matriz[i] != nil)

                        resta[i] = Hash.new()
                                
                        case true

                                # Los dos tienen hash
                                when (matriz[i] != nil and o.matriz[i] != nil)
                        
                                        # cogemos matriz como base para la resta
                                        resta[i] = matriz[i]

                                        o.matriz[i].each do |key, value|
                        
                                                if resta[i].has_key?(key)
                                                        resta[i][key] = resta[i][key] - o.matriz[i][key]
                                                else
                                                        resta[i][key] = o.matriz[i][key] * -1
                                                end

                                        end

                                # matriz tiene hash
                                when matriz[i] != nil
                                        resta[i] = matriz[i]                                             

                                # o hash
                                when o.matriz[i] != nil
                                        resta[i] = o.matriz[i]
                                        resta[i].each do |key, value|
                                                resta[i][key] =  resta[i][key] * -1
                                        end

                        end
                
                end

        end
        MatrizDispersa.new(resta)

end
max() click to toggle source

Máximo de matriz

# File lib/modai_prct10.rb, line 380
def max

        maximo = 0.to_f
        for i in 0...matriz.size
                # Hay datos en la fila
                if matriz[i] != nil
                        matriz[i].each do |key, value|
                                if matriz[i][key].to_f > maximo
                                        maximo = matriz[i][key].to_f
                                end
                        end                        
                end
        end
        maximo

end
min() click to toggle source

Minimo de matriz

# File lib/modai_prct10.rb, line 398
def min

        minimo = 0.to_f
        for i in 0...matriz.size                        
                # Hay datos en la fila
                if matriz[i] != nil                                  
                        matriz[i].each do |key, value|
                                       if matriz[i][key].to_f < minimo
                                               minimo = matriz[i][key].to_f
                                end
                        end
                end                             
        end
        minimo

end
to_f() click to toggle source

Matriz en punto flotante

# File lib/modai_prct10.rb, line 219
def to_f

        flotante = Array.new(matriz.size - 1)
        for i in 0...matriz.size
                # Hay datos en la fila
                if matriz[i] != nil
                        
                        flotante[i] = Hash.new()
                        matriz[i].each do |key, value|
                                flotante[i][key] = matriz[i][key].to_f
                        end
                
                end

        end
        MatrizDispersa.new(flotante)

end
to_s() click to toggle source

Convertimos a string

# File lib/modai_prct10.rb, line 183
def to_s

        fil = 0
        print "["
        while fil < filas

                col = 0
                while col < columnas

                        # Hay datos en la fila
                        if matriz[fil] != nil

                                if matriz[fil].has_key?(col)
                                        print "#{matriz[fil][col].to_s}"
                                else
                                        print "0"
                                end 
                        else
                                print "0"
                        end

                               if (col + 1) < columnas then print ", " end
                        col += 1

                end


                if (fil + 1) < filas then print ", " end
                fil += 1

        end
        print "]"

end