06
Mar
10

Multiplicar matrices con java

Bueno otro ejercicio propuesto por Justo aquí se los dejo pero está el principal con un ciclo for tienen que modificarlo los demás si están con recursvidad

public class Tarea {

    public static int vectorPrimos(int vector[], int indice){
    	return(indice>=vector.length)?0:valorPrimo(vector[indice],1,0)+vectorPrimos(vector,indice+1);
    }

    public static int valorPrimo(int numero,int contador, int divisores){
    	if(contador==numero){
    		return (divisores<=1)?numero:0;
    	}
    	if(numero%contador==0){
    		divisores=divisores+1;
    	}
    	return (divisores>2)?0:valorPrimo(numero,contador+1,divisores);
	}

	public static String vectorToString(int vector[], int i){
    	return (i>=vector.length)?"|\n":"| "+vector[i]+" "+vectorToString(vector,i+1);
    }

    public static void imprimirVector(int vector[]){
    	System.out.println (vectorToString(vector,0));
    }

  	public static int[][] multiplicarMatrices(int ma[][], int mb[][]){
  		int mc[][]=new int[ma.length][mb[0].length];
		for (int i = 0; i<ma.length; i++){
			for (int j = 0; j<mb[0].length; j++){
				int fil[]=ma[i];
				int col[]=columna(mb,new int[mb.length],j,0);
				int res[]=multiplicarVectores(fil,col,new int[col.length],0 );
				int sum=sumatoriaVector(res,0,0);
				mc[i][j]=sum;
			}
		}

		return mc;
	}

	public static int[] columna(int m[][],int columna[],int c, int f){
		if(f>=m.length){
    		return columna;
    	}
    	columna[f]=m[f][c];
		return columna(m,columna, c, f+1);
	}
	//indice=0
	//v1.length==v2.length==v3.length
	public static int[] multiplicarVectores(int v1[], int v2[], int v3[],int indice){
		if(indice>=v3.length){
    		return v3;
    	}
    	v3[indice]=v1[indice]*v2[indice];
    	return multiplicarVectores(v1,v2,v3,indice+1);
	}
	//indice=0
	//suma=0
	public static int sumatoriaVector(int vector[],int indice, int suma){
		if(indice>=vector.length){
    		return suma;
    	}
    	suma=suma+vector[indice];
    	return sumatoriaVector(vector,indice+1,suma);
	}
    //i=0
    //j=0
    public static void imprimirMatriz(int matriz[][], int i,int j){
    	if(i<matriz.length){
    		System.out.print("| "+matriz[i][j]+" ");
    		j++;
    		if(j>=matriz[0].length){
    			System.out.println("|");
    			i=i+1;
    			j=0;
    		}
    		imprimirMatriz(matriz, i,j);

    	}
    }

    public static void main (String[] args) {
    	int v[]=new int[]{1,2,3,5};
    	int suma=sumatoriaVector(v,0,0);
    	System.out.println ("Sumatoria de los numero primos en "+vectorToString(v,0)+" es igual a "+suma);

    	int m1[][]= new int[][]{{1,2,3},
    							{4,5,6}
    							};
    	int m2[][]= new int[][]{{1,2},
    							{3,4},
    							{5,6}
    							};
    	imprimirMatriz(m1,0,0);
    	System.out.println ("*");
    	imprimirMatriz(m2,0,0);
    	System.out.println ("=");
    	int m3[][]=multiplicarMatrices(m1,m2);
    	imprimirMatriz(m3,0,0);
	}
}

la salida del programa es algo asi

la sumatoria de los numero primos en | 1 | 2 | 3 | 5 |
 es igual a 11
| 1 | 2 | 3 |
| 4 | 5 | 6 |
*
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
=
| 22 | 28 |
| 49 | 64 |

3 Responses to “Multiplicar matrices con java”


  1. 1 oscar diaz
    noviembre 9, 2012 a las 5:04 pm

    hay forma que siga multiplicando hasta que la matriz de 0 en todo? y que me muestre todos los resultados de las multiplicaciones? y aparte me grafique la matriz inicial?

    • noviembre 13, 2012 a las 11:21 am

      Si has notado las multiplicaciones corresponde a operaciones entre las posiciones de las matrices, ahora para que de ‘0’ en todas las posiciones de las matrices tiene que existir valores que al multiplicarse y sumarse se anulen. y para hacer multiplicaciones sucesivas la matriz resultante tiene que ser de dimensiones con las que se pueda seguir multiplicando. así que si se puede solo que debes ponerlo en un ciclo mientras que la sumatoria de la matriz sea diferente de ‘0’ seguir multiplicando.

  2. mayo 17, 2015 a las 9:34 pm

    amigo podria multiplicar una matriz aleatoria de 5 * 5 por n veces?


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


I+Ds

Dudas consultas
Facebook
Twiter
Google +

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevas publicaciones por correo.

Únete a otros 348 seguidores

Ingenio DS en Facebook

Redes Sociales y Archivos

Entradas

marzo 2010
L M X J V S D
« Feb   Abr »
1234567
891011121314
15161718192021
22232425262728
293031  

IngenioDS en twiter


A %d blogueros les gusta esto: