class Matriz

Public Class Methods

constructor(filas, columnas, velementos) click to toggle source
# File lib/prac09/matriz.rb, line 19
def Matriz.constructor(filas, columnas, velementos)

        longitud=filas*columnas
         if (((velementos.count(0)*100)/(longitud)) >= 60)

                MatrizDispersa.new(filas,columnas,velementos)
        else 

                MatrizDensa.new(filas,columnas,velementos)
        end
end
new(filas, columnas) click to toggle source
# File lib/prac09/matriz.rb, line 4
def initialize(filas, columnas)
        @filas, @columnas = filas , columnas
end

Public Instance Methods

*(object) click to toggle source
# File lib/prac09/matriz.rb, line 96
def *(object)

        if(object.is_a? Numeric)
                matrizresultado=Array.new
                i=0
                while (i<@filas)
                        j=0
                        while (j<@columnas)
                                matrizresultado << (self[i,j]*object)
                                j=j+1
                        end
                        i=i+1
                end
                return Matriz.constructor(@filas,@columnas,matrizresultado)
        

        elsif ((object.is_a?(Matriz)==true) && (@columnas==object.filas()))
                i=0
                matrizresultado = Array.new
                while (i < @filas)
                        j = 0
                        while (j < object.columnas())
                                k = 0
                                matrizresultado<<0
                                while (k < @columnas) #itera en las columnas de la primera matriz y las filas de la segunda
                                        matrizresultado[(matrizresultado.size)-1]= (matrizresultado.last + (self[i,k] * object[k,j]))
                                        k = k + 1
                                end
                                j = j + 1
                        end
                        i = i + 1
                end
                return Matriz.constructor(@filas,object.columnas,matrizresultado)
        end
end
+(object) click to toggle source
# File lib/prac09/matriz.rb, line 32
def +(object)
        
        if ( (@filas == object.filas) && (@columnas == object.columnas))
      
                matrizresultado=Array.new
                i = 0
                while (i < @filas) do
        
                        j=0
                        while (j < @columnas) do
                
                                matrizresultado << (self[i,j] + object[i,j])
                                j=j+1
                        end
                        i=i+1
                end
                Matriz.constructor(@filas, @columnas, matrizresultado)
        end
end
-(object) click to toggle source
# File lib/prac09/matriz.rb, line 53
def -(object)
        
        if ( (@filas == object.filas) && (@columnas == object.columnas))
      
                matrizresultado=Array.new
                i = 0
                while (i < @filas) do
        
                        j=0
                        while (j < @columnas) do
                
                                matrizresultado << (self[i,j] - object[i,j])
                                j=j+1
                        end
                        i=i+1
                end
                Matriz.constructor(@filas, @columnas, matrizresultado)
        end
end
==(object) click to toggle source
# File lib/prac09/matriz.rb, line 75
def ==(object)
        if ((@filas == object.filas) && (@columnas == object.columnas))
                i = 0
                while (i < @filas) do

                        j = 0
                        while (j < @columnas) do

                                if (self[i,j] == object[i,j]) #comparamos elemento a elemento
                                        es_igual = true
                                else 
                                        return es_igual = false #si solo uno es distinto la funcion devuelve falso
                                end
                                j = j + 1
                        end
                        i = i + 1
                end
        end
        return es_igual #si compara todos los elementos y son iguales devuelve verdadero
end
coerce(object) click to toggle source
# File lib/prac09/matriz.rb, line 186
def coerce(object)
        [self,object]
end
columnas() click to toggle source

get columnas

# File lib/prac09/matriz.rb, line 14
def columnas()
        @columnas
end
filas() click to toggle source

get filas

# File lib/prac09/matriz.rb, line 9
def filas()
        @filas
end
max() click to toggle source
# File lib/prac09/matriz.rb, line 132
def max()
        maximo = 0 # maximo provisional
        i, j = 0,0
        while i<=@filas
                while j<=@columnas
                        if (self[i,j]>maximo) #si el valor es mayor que el provisional almacena el nuevo
                                maximo = self[i,j]
                        end
                        j += 1;
                end
                i += 1;
        end
        return maximo
end
min() click to toggle source
# File lib/prac09/matriz.rb, line 147
def min()
        minimo = 0 # maximo provisional
        i, j = 0,0
        while i<=@filas
                while j<=@columnas
                        if (self[i,j]<minimo) #si el valor es mayor que el provisional almacena el nuevo
                                minimo = self[i,j]
                        end
                        j += 1;
                end
                i += 1;
        end
        return minimo
end
to_s() click to toggle source
# File lib/prac09/matriz.rb, line 162
def to_s
        string= "[" ##corchete de matriz
        
        fil=0
        while (fil<@filas)
                string = string + "[" #corchete de fila
                col=0
                while (col<@columnas)
                        string = string + "#{self[fil,col]}"
                        col += 1
                        if(col < @columnas)
                                string = string + ","
                        end
                end
                string = string + "]" #cerramos el corchete de fila
                fil += 1
                if (fil < @filas)
                        string = string + ","
                end
        end
        string = string +"]" ##cerramos el corchete de matriz
end