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