class Matrizdispersascp::MatrizDispersa

Attributes

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

Public Class Methods

new(matriz) click to toggle source
# File lib/matrizdispersascp.rb, line 31
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/matrizdispersascp.rb, line 84
def +(o)
    suma = Array.new(matriz.size - 1)
    for i in 0...matriz.size
        if (matriz[i] != nil or o.matriz[i] != nil)
            suma[i] = Hash.new()
            case true
                 when (matriz[i] != nil and o.matriz[i] != nil)
                     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
                 when matriz[i] != nil
                     suma[i] = matriz[i]                                                
                 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/matrizdispersascp.rb, line 110
def -(o)
   resta = Array.new(matriz.size - 1)
   for i in 0...matriz.size
        if (matriz[i] != nil or o.matriz[i] != nil)
            resta[i] = Hash.new()
                case true
                    when (matriz[i] != nil and o.matriz[i] != nil)
                        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
                    when matriz[i] != nil
                        resta[i] = matriz[i]
                    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

Meodo que calcula el maximo de una matriz dispersa

# File lib/matrizdispersascp.rb, line 139
def max
    maximo = 0.to_f
    for i in 0...matriz.size
        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

Metodo que calcula el minimo de una mariz dispersa

# File lib/matrizdispersascp.rb, line 154
def min

 minimo = 0.to_f
    for i in 0...matriz.size                        
        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
# File lib/matrizdispersascp.rb, line 69
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
# File lib/matrizdispersascp.rb, line 38
def to_s
    fil = 0
    st = "{"
    while fil < filas
        col = 0
        st += "{"
        while col < columnas
            if @matriz[fil] != nil    # Hay datos en la fila
                if @matriz[fil].has_key?(col)  
                    st += "#{@matriz[fil][col].to_s}"
                else
                   st += "0"
                end 
            else
                st += "0"
            end
                if (col + 1) < columnas then 
                    st += ", " 
                end
            col += 1
        end
        if (fil + 1) < filas then 
            st += "}" 
        end
        st += "}"
    fil += 1
    end
    st += "}"
    st
end