Clase abstracta de la que heredan matriz densa y dispersa. No se puede crear un objeto de esta clase.
Sobrecarga del operador de suma, recibe como parametros dos matrices y devuelve una matriz con el resultado de la suma de forma A+B= (Aij+Bij)
# File lib/matrices_p9.rb, line 23 def +(other) if(self.fil == other.fil and self.col == other.col) # SELF Matrices densas if self.instance_of?MatrizDensa temp = MatrizDensa.new(self.fil, self.col, nil) if other.instance_of?MatrizDensa #for i in (0...@fil.to_i) @fil.to_i.times do |i| #for j in (0...@col.to_i) @col.to_i.times do |j| temp.mat[i][j] = (@mat[i][j]) + (other.mat[i][j]) end end end if other.instance_of?MatrizDispersa #for i in (0...@fil.to_i) @fil.to_i.times do |i| #for j in (0...@col.to_i) @col.to_i.times do |j| encontrado = 0 #for k in (0...other.posx.size) other.posx.size.times do |k| if (i==other.posx[k] and j==other.posy[k] and encontrado==0) temp.mat[i][j] = (self.mat[i][j]) + (other.valor[k]) encontrado = 1 end end if (encontrado == 0) temp.mat[i][j] = self.mat[i][j] end end end end end # SELF Matriz Dispersa if self.instance_of?MatrizDispersa if other.instance_of?MatrizDensa temp = MatrizDensa.new(self.fil, self.col, nil) #for i in (0...@fil.to_i) @fil.to_i.times do |i| for j in (0...@col.to_i) encontrado = 0 #for k in (0...self.posx.size.to_i) self.posx.size.times do |k| if (i==self.posx[k] and j==self.posy[k] and encontrado==0) temp.mat[i][j] = (other.mat[i][j]) + (self.valor[k]) encontrado = 1 end end if (encontrado == 0) temp.mat[i][j] = other.mat[i][j] end end end end if other.instance_of?MatrizDispersa temp = MatrizDispersa.new(self.fil,self.col,[],[],[]) temp.valor = self.valor temp.posx = self.posx temp.posy = self.posy #for j in (0...other.posx.size.to_i) other.posx.size.to_i.times do |j| encontrado = false #for k in (0...self.posx.size.to_i) self.posx.size.times do |k| if(other.posx[j] == temp.posx[k] and other.posy[j] == temp.posy[k]) temp.valor[k] = temp.valor[k] + other.valor[j] encontrado = true end end if (encontrado == false) temp.posx << other.posx[j] temp.posy << other.posy[j] temp.valor << other.valor[j] end end end end return temp else return nil end end
Sobrecarga del operador de resta, recibe como parametros dos matrices y devuelve una matriz con el resultado de la suma de forma A-B= (Aij+Bij)
# File lib/matrices_p9.rb, line 124 def -(other) if(self.fil == other.fil and self.col == other.col) # SELF Matrices densas if self.instance_of?MatrizDensa temp = MatrizDensa.new(self.fil, self.col, nil) if other.instance_of?MatrizDensa #for i in (0...@fil.to_i) @fil.to_i.times do |i| #for j in (0...@col.to_i) @col.to_i.times do |j| temp.mat[i][j] = (self.mat[i][j]) - (other.mat[i][j]) end end end if other.instance_of?MatrizDispersa #for i in (0...@fil.to_i) @fil.to_i.times do |i| #for j in (0...@col.to_i) @col.to_i.times do |j| encontrado = 0 #for k in (0...other.posx.size) other.posx.size.times do |k| if (i==other.posx[k] and j==other.posy[k] and encontrado==0) temp.mat[i][j] = (self.mat[i][j]) - (other.valor[k]) encontrado = 1 end end if (encontrado == 0) temp.mat[i][j] = self.mat[i][j] end end end end end # SELF Matriz Dispersa if self.instance_of?MatrizDispersa if other.instance_of?MatrizDensa temp = MatrizDensa.new(self.fil, self.col, nil) #for i in (0...@fil.to_i) @fil.to_i.times do |i| #for j in (0...@col.to_i) @col.to_i.times do |j| encontrado = 0 #for k in (0...self.posx.size.to_i) self.posx.size.times do |k| if (i==self.posx[k] and j==self.posy[k] and encontrado==0) temp.mat[i][j] = (other.mat[i][j]) - (self.valor[k]) encontrado = 1 end end if (encontrado == 0) temp.mat[i][j] = other.mat[i][j] end end end end if other.instance_of?MatrizDispersa temp = MatrizDispersa.new(self.fil,self.col,[],[],[]) temp.valor = self.valor temp.posx = self.posx temp.posy = self.posy #for j in (0...other.posx.size.to_i) other.posx.size.times do |j| encontrado = false #for k in (0...self.posx.size.to_i) self.posx.size.times do |k| if(other.posx[j] == temp.posx[k] and other.posy[j] == temp.posy[k]) temp.valor[k] = temp.valor[k] - other.valor[j] encontrado = true end end if (encontrado == false) temp.posx << other.posx[j] temp.posy << other.posy[j] temp.valor << other.valor[j] end end end end return temp else return nil end end
Generated with the Darkfish Rdoc Generator 2.