You are on page 1of 15

Instituto Nacional de Sonzacate

Grupo # 3
Ejercicio #2

Integrantes:
Jorge Alberto Arvalo rodrguez.
Brayan Alexander guillen Argueta.
Jackeline Gabriela Erazo.
Nixon Danilo Le Le .
Carlos Alberto reyes.
Carlos Arturo Alvarado.
Profesor: Lic. Boris Ramrez
3 Desarrollo de Software
Ao: 2014









Enunciado del problema
Escribir un programa que recoja de la entrada estndar dos matrices de enteros el tamao
especificado por el usuario y los multiplique dos a dos, guardando el resultado en otra matriz e
imprimiendo los valores de esta ltima matriz


Anlisis
Variables

Entradas

Procesos

Salidas













Algoritmo

Proceso multiplicacion_matrices



Escribir "";
Escribir "ingrese cantidad de filas y columnas de la 1 matriz";
Escribir "No. de filas :";
Leer A;
Escribir "No. de columnas :";
Leer B;

Dimension matriz1(A,B);
Escribir "";
Escribir "ingrese cantidad de filas y columnas de la 2 matriz";
Escribir "No. de filas :";
Leer C;
Escribir "No. de columnas :";
Leer D;

Dimension matriz2(C,D);

si B=C Entonces // determinacion si son multiplicables o no

Escribir "";
Escribir "las matrices son multiplicables. se generara una matriz de ", A,"X", D;
Dimension matrizresul(A,D);

// ingreso de datos de la 1a matriz
Escribir "";
Escribir "ingrese datos de la 1a matriz";
Para i<-1 Hasta A Con Paso 1 Hacer
Para j<-1 Hasta B Con Paso 1 Hacer
Escribir "ingrese dato de la posicion ",i,",",j;
Leer matriz1(i,j);

FinPara

FinPara

// ingreso de datos de la 2a matriz
Escribir "";
Escribir "ahora ingrese datos de la 2 matriz";
Para i<-1 Hasta C Con Paso 1 Hacer
Para j<-1 Hasta D Con Paso 1 Hacer
Escribir "ingrese dato de la pocicion ",i,",",j;
Leer matriz2(i,j);

FinPara

FinPara

// multiplicacion
Para i<-1 hasta A Con Paso 1 Hacer
Para j<-1 hasta D Con Paso 1 Hacer
suma <- 0 ; // acumulador de las multiplicaciones necesarias
Para x<-1 hasta B Con Paso 1 Hacer
suma <- suma + matriz1(i,x) * matriz2(x,j);

FinPara
matrizresul(i,j) <- suma;

FinPara

FinPara

// mostrar los resultados en orden
Escribir "";
Escribir "la matriz generada es:";

Para i<-1 Hasta A Con Paso 1 Hacer
Escribir 'FILA ',i,':';
Para j<-1 Hasta D Con Paso 1 Hacer
Escribir matrizresul(i,j);
FinPara

FinPara


Sino
Escribir "";
Escribir "sorry... las matrices no son multiplicables (el numero de columnas de la
primera matriz debe ser igual al de filas de la segunda matriz)";

FinSi


FinProceso


































Flujograma







SI LA CONDICION ES VERDADERA HARA EL SIGUIENTE PROCESO

























SI LA CONDICION RESULTA FALSA SE HARA ESTE PROCESO

Y AH FINALIZA EL PROCESO



Programa En Java
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ejerciciopropuesto;

/**
*
* @author Reyes
*/
import java.util.*;

public class Ejercicio2 {


public static void main(String[] arg){

Scanner cin=new Scanner(System.in);
System.out.print("\r");
matriz A,B,C;
Multiplicacion m;
int f,c;
System.out.println("Dimensiones de la Matriz A:");
System.out.print(" - Filas : ");
f=cin.nextInt();
System.out.print(" - Columnas: ");
c=cin.nextInt();
A=new matriz(f,c);

System.out.println("Dimensiones de la Matriz B:");
System.out.print(" - Filas : ");
f=cin.nextInt();
System.out.print(" - Columnas: ");
c=cin.nextInt();
B=new matriz(f,c);

System.out.println("Introducir Elementos: ");
System.out.println("Matriz A:("+A.filas+"x"+A.columnas+")");
for(int i=0;i<A.filas;i++){
for(int j=0;j<A.columnas;j++){
A.Llenar(cin.nextInt(),i,j);
}
}
System.out.println("Matriz B:("+B.filas+"x"+B.columnas+")");
for(int i=0;i<B.filas;i++){
for(int j=0;j<B.columnas;j++){
B.Llenar(cin.nextInt(),i,j);
}
}
m=new Multiplicacion(A,B);
C=m.Solucion();

A.Mostrar();
B.Mostrar();
if( !m.tieneSolucion){
System.out.println("No se puede resolver.");
}
else{
C.Mostrar();
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ejerciciopropuesto;
public class matriz{
public int[][] matriz;
public int filas,columnas;
public matriz(){
filas=1;
columnas=1;
}
public matriz(int f,int c){
filas=f;
columnas=c;
matriz=new int[filas][columnas];
}
public void Llenar(int valor,int i,int j){ // Introduce un valor en la matriz en la
// posicion i,j
matriz[i][j]=valor;
}
public int[] getFila(int k){ // Devuelve un vector con la fila k.
int[] row=new int[matriz[k].length];
for(int i=0;i<row.length;i++){
row[i]=matriz[k][i];
}
return row;
}
public int[] getColumna(int k){ // Devuelve un vector con la columna k.
int[] column=new int[matriz.length];
for(int i=0;i<column.length;i++){
column[i]=matriz[i][k];
}
return column;
}
public void Mostrar(){ // Muestra los elementos de la matriz.
System.out.println("Matriz:");
for(int i=0;i<filas;i++){
for(int j=0;j<columnas;j++){
System.out.print(matriz[i][j]+" ");
}
System.out.println();
}
}
}
*/

public class Multiplicacion {
public matriz A,B,C;
public boolean tieneSolucion;
public Multiplicacion(matriz matrizA,matriz matrizB){
A=matrizA;
B=matrizB;
InicializarMatrizDeSolucion();// Inicializa la matriz C si y solo si se puede.
if(tieneSolucion){
Multiplicar();
}
}
private void InicializarMatrizDeSolucion(){
if(A.columnas==B.filas){ // Condicion para la multiplicacion
C=new matriz(A.filas,B.columnas);
tieneSolucion=true;
}
else{ // Si no se cumple no se puede multiplicar
C=new matriz();
tieneSolucion=false;
}
}
private void Multiplicar(){ // Funcion que multiplica.
for(int i=0;i<C.filas;i++){ // Recorre toda la matriz
for(int j=0;j<C.columnas;j++){
C.matriz[i][j]=Elemento(i,j); // Y la llena con un entero.
}
}
}
private int Elemento(int i,int j){ // Entero que resulta de la multiplicacion
int[] fila=A.getFila(i); // Tomamos la fila "i" y la columna "j"
int[] columna=B.getColumna(j);
int resultado=0;
for(int k=0;k<fila.length;k++){ // Multiplicamos como se hace
resultado+=fila[k]*columna[k]; // normalmente
}
return resultado;
}
public matriz Solucion(){ // Devolvemos la matriz C la que tiene la solucion.
return C;
}
}

Cuadro de Actividades:
Carlos Alberto reyes valle Programa en java
Jorge Alberto Arvalo Rodrguez Presentacin, Anlisis
Brayan Alexander Guillen
Argueta
Algoritmo , Anlisis
Jackeline Gabriela Erazo Reporte
Carlos Arturo Alvarado Algoritmo
Nixon Danilo Le Le Reporte

You might also like