domingo, 13 de mayo de 2012
Suma, multiplicación y traspuesta de una matriz en JAVA
Calculos con matrices en Java.
public class Matriz {
//almacena los datos de la matriz usada en los calculos
int [][] maDatos;
public Matriz(int f, int c){
//if anidados que verifican si la matriz es cuadrada para evitar matrices
//rectangulares.
//si las filas son igual a la columna
if (f == c){
maDatos = new int [f][c];
}
//si las filas son menores que las columnas usar las columnas
else if(f < c){
maDatos = new int [c][c];
}
//si las filas son mayores que las columnas usar las filas
else {
maDatos = new int [f][f];
}
}
//permite insertar un arreglo al instanciar el objeto
public Matriz (int [][] d){
maDatos = d;
}
//metodo que suma dos matrices
public Matriz sumar(Matriz m){
int laRes[][] = new int [maDatos.length][maDatos[0].length];
//instrucciones for que permiten sumar una matriz elemento
//por elemento
for(int i = 0; i < maDatos.length; i++){
for (int j = 0; j < maDatos[0].length; j++){
laRes [i][j] = maDatos[i][j] + m.maDatos[i][j];
}
}
return new Matriz (laRes);
}
//metodo que genera la traspuesta de una matriz
public Matriz traspuesta(){
int laRes[][] = new int [maDatos[0].length][maDatos.length];
for(int i = 0; i < maDatos.length; i++){
for (int j = 0; j < maDatos[0].length; j++){
laRes [j][i] = maDatos[i][j];
}
}
return new Matriz (laRes);
}
//metodo que multiplica dos matrices
public Matriz multiplicar(Matriz m){
int laRes[][] = new int [maDatos.length][maDatos[0].length];
//se necesitan tres instrucciones for para multiplicar cada
//fila de la una matriz por las columnas de la otra
for(int i = 0; i < maDatos.length; i++){
for (int j = 0; j < maDatos[0].length; j++){
for (int k = 0; k < maDatos[0].length; k++){
laRes [i][j] += maDatos[i][k] * m.maDatos[k][j];
}
}
}
return new Matriz (laRes);
}
//permite visualizar la matriz
public void mostrar(){
for(int i = 0; i < maDatos.length; i++){
for (int j = 0; j < maDatos[0].length; j++){
System.out.print("|" + maDatos[i][j]);
}
System.out.print("|\n");
}
System.out.print("\n");
}
}
Suscribirse a:
Enviar comentarios (Atom)
hola, quisiera saber como puedo sumar la matriz si la matriz esta en un archivo .txt gracias muy buen codigo
ResponderEliminarPuedes intentar con el siguiente código:
ResponderEliminarFile archivoEntrada = new File("datos.txt");
miarchivo = new FileInputStream(archivoEntrada);
byte arr1[] = new byte[(int)archivoEntrada.length()];
miarchivo.read(arr1);
cadena = new String(arr1);
System.out.println(cadena);
StringTokenizer st = new StringTokenizer(cadena,";");
while(st.hasMoreTokens()){
st.nextToken();
}
Debes tener en cuenta como tienes los datos en el .txt para que obtengas los datos, en este caso los datos del archivo se encuentran separados por coma, lo cual en la linea st.nextToken() se van a ir obteniendo cada registro.
En esta liena File archivoEntrada = new File("datos.txt") debes colocar con la ruta donde se encuentra el archivo.
hola ,quisiera saber como puedo hacer para sumar,resta una matriz
ResponderEliminarla suma ya está, y la resta revisa la función de la suma y cambiar el signo, public Matriz sumar(Matriz m) {....
Eliminarok muchas gracias
Eliminarhola wilmer estoy sumando y restando una matriz bajo tus parametros pero al dar le run no me genera nada me puedes decir el por que
ResponderEliminarpublic class Matriz {
public static void main(String[] args) {
}
private Object[] maDatos;
// TODO Auto-generated method stub
//almacena los datos de la matriz usada en los calculos
public Matriz(int f, int c){
//if anidados que verifican si la matriz es cuadrada para evitar matrices
//rectangulares.
int[][] maDatos;
//si las filas son igual a la columna
if (f == c){
maDatos = new int [3][3];
}
//si las filas son menores que las columnas usar las columnas
else if(f < c){
maDatos = new int [3][3];
}
//si las filas son mayores que las columnas usar las filas
else {
maDatos = new int [3][3];
}
}
//permite insertar un arreglo al instanciar el objeto
public Matriz (int [][] d){
int maDatos = 3;
}
//metodo que suma dos matrices
public Matriz sumar(Matriz m){
Object maDatos;
int laRes[][] = new int [maDatos.length][maDatos[0].length];
//instrucciones for que permiten sumar una matriz elemento
//por elemento
for(int i = 0; i < maDatos.length; i++){
for (int j = 0; j < maDatos[].length; j++){
laRes [i][j] = maDatos[i][j] + m.maDatos[i][j];
}
}
return new Matriz (laRes);
}
public Matriz resta(Matriz m){
Object maDatos;
int laRes[][] = new int [maDatos.length][maDatos[0].length];
//instrucciones for que permiten sumar una matriz elemento
//por elemento
for(int i = 0; i < maDatos.length; i++){
for (int j = 0; j < maDatos[].length; j++){
laRes [i][j] = maDatos[i][j] - m.maDatos[i][j];
}
}
Cómo le estas mandando los valores de la matriz?
EliminarHola muy bueno :), Pero quisiera saber como hacer para que el usuario ingrese cierta cantidad x de columnas por cierta cantidad de x por filas por cada matriz, Me gustaría saber como :/. Gracias
ResponderEliminarhaz un metodo q la capture y luego la seteas.
Eliminar//metodo en java para multiplicar dos matrices
ResponderEliminarpublic static void Multiplicacion(int[][] m1,int [][] m2){
if (m1[0].length!=m2.length)
{JOptionPane.showMessageDialog(null,"no se pude multiplicar la matriz");}
else{
int m3[][]=new int [m1.length][m1.length];
for(int i=0;i<m1.length;i++){
for(int j=0;j<m1.length;j++){
int sum=0;
for (int k=0;k<m1[0].length;k++){
sum=m1[i][k]*m2[k][j];
}
m3 [i] [j] =sum;
}
Mostrar(m3);
}
}
}