Posteado por: joacosoft | 17 julio 2009

Operaciones con Matrices

import java.io.*;

public class MenuMatriz{

public static void main(String args[]){

Operaciones obj= new Operaciones();

Leer Lee = new Leer();

int op;

do{

System.out.println(“n         M E N U         “);

System.out.println(“=========================”);

System.out.println(”   [1] SUMA”);

System.out.println(”   [2] RESTA”);

System.out.println(”   [3] MULTIPLICACCION”);

System.out.println(”   [4] DIVICION”);

System.out.println(”   [5] SALIR”);

System.out.print(“nELIGE UNE OPCION : “);

op=Lee.datoInt();

switch (op){

case 1: obj.Suma();      break;

case 2: obj.Resta();    break;

case 3: obj.Multiplicacion();    break;

case 4: obj.Division(); break;

case 5: System.out.println(“nFin del programa.”); break;

default: System.out.println(“n¡¡¡Error de seleccion!!!”);

}

}while(op!=5);

}

}

class Leer{

public static String dato(){

String sdato=””;

try{

InputStreamReader isr = new InputStreamReader (System.in);

BufferedReader flujo =new BufferedReader (isr);

sdato=flujo.readLine();

}

catch (IOException e){

System.err.println(“Error”+ e.getMessage());

}

return sdato;

}

public static int datoInt(){

try{

return Integer.parseInt (dato());

}

catch(NumberFormatException e){

return Integer.MIN_VALUE;

}

}

public static float datoFloat(){

try{

Float f = new Float(dato());

return f.floatValue();

}

catch(NumberFormatException e){

return Float.NaN; // No es un Número; valor float.

}

}

}

class Operaciones{

void Muestra(float M[][],int F,int C){

for(int y=0; y<F; y++){

System.out.print(“n”);

for(int x=0; x<C; x++)

System.out.print(M[x][y]+”  “);

}

}

void Muestra(int M[][],int F,int C){

for(int y=0; y<F; y++){

System.out.print(“n”);

for(int x=0; x<C; x++)

System.out.print(M[x][y]+”  “);

}

}

boolean Compara(int AX,int AY,int BX,int BY){

if ((AX==BX && AY==BY))

return true;

return false;

}

boolean Compara(int AX,int BY){

if ((AX==BY))

return true;

return false;

}

void Suma(){

Leer Lee = new Leer();

Operaciones Obj= new Operaciones();

int FA=0;

int FB=0;

int CA=0;

int CB=0;

System.out.println(“n Teclee el número de Filas y Columnas para las matrices.”);

System.out.print(“n Filas de A:”); FA=Lee.datoInt();

System.out.print(“n Filas de B:”); FB=Lee.datoInt();

System.out.print(“n Columnas de A:”); CA=Lee.datoInt();

System.out.print(“n Columnas de B:”); CB=Lee.datoInt();

int A[][] = new int[CA][FA];

int B[][] = new int[CB][FB];

int S[][] = new int[CA][FB];

if (Obj.Compara(CA,FA,CB,FB)){

System.out.println(“nElementeos para A:”);

for(int y=0; y<FA; y++)

for(int x=0; x<CA; x++){

System.out.print(“A[“+(x+1)+”][“+(y+1)+”] = “); A[x][y]= Lee.datoInt();

}

System.out.println(“nElementeos para B:”);

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++){

System.out.print(“B[“+(x+1)+”][“+(y+1)+”] = “); B[x][y]= Lee.datoInt();

}

System.out.println(“nMatriz A:n”);

Obj.Muestra(A,FA,CA);

System.out.println(“nMatriz B:n”);

Obj.Muestra(B,FB,CB);

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++)

S[x][y]=A[x][y]+B[x][y];

System.out.println(“nLa suma es:n”);

Obj.Muestra(S,FA,CB);

}

else{

System.out.println(“n Para sumarce las matrices tienen que tener las mismas dimenciones”);

}

}

void Resta(){

Leer Lee = new Leer();

Operaciones Obj= new Operaciones();

int FA=0;

int FB=0;

int CA=0;

int CB=0;

System.out.println(“n Teclee el número de Filas y Columnas para las matrices.”);

System.out.print(“n Filas de A:”); FA=Lee.datoInt();

System.out.print(“n Filas de B:”); FB=Lee.datoInt();

System.out.print(“n Columnas de A:”); CA=Lee.datoInt();

System.out.print(“n Columnas de B:”); CB=Lee.datoInt();

int A[][] = new int[CA][FA];

int B[][] = new int[CB][FB];

int S[][] = new int[CA][FB];

if (Obj.Compara(CA,FA,CB,FB)){

System.out.println(“nElementeos para A:”);

for(int y=0; y<FA; y++)

for(int x=0; x<CA; x++){

System.out.print(“A[“+(x+1)+”][“+(y+1)+”] = “); A[x][y]= Lee.datoInt();

}

System.out.println(“nElementeos para B:”);

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++){

System.out.print(“B[“+(x+1)+”][“+(y+1)+”] = “); B[x][y]= Lee.datoInt();

}

System.out.println(“nMatriz A:n”);

Obj.Muestra(A,FA,CA);

System.out.println(“nMatriz B:n”);

Obj.Muestra(B,FB,CB);

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++)

S[x][y]=A[x][y]+(B[x][y]*-1);

System.out.println(“nLa resta es:n”);

Obj.Muestra(S,FA,CB);

}

else{

System.out.println(“n Para restarse las matrices tienen que tener las mismas dimenciones”);

}

}

void Multiplicacion(){

Leer Lee = new Leer();

Operaciones Obj= new Operaciones();

int FA=0;

int FB=0;

int CA=0;

int CB=0;

int suma=0;

int h=0;

System.out.println(“n Teclee el número de Filas y Columnas para las matrices.”);

System.out.print(“n Filas de A:”); FA=Lee.datoInt();

System.out.print(“n Filas de B:”); FB=Lee.datoInt();

System.out.print(“n Columnas de A:”); CA=Lee.datoInt();

System.out.print(“n Columnas de B:”); CB=Lee.datoInt();

int A[][] = new int[CA][FA];

int B[][] = new int[CB][FB];

int S[][] = new int[CA][FB];

if (Obj.Compara(CA,FB)){

System.out.println(“nElementeos para A:”);

for(int y=0; y<FA; y++)

for(int x=0; x<CA; x++){

System.out.print(“A[“+(x+1)+”][“+(y+1)+”] = “); A[x][y]= Lee.datoInt();

}

System.out.println(“nElementeos para B:”);

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++){

System.out.print(“B[“+(x+1)+”][“+(y+1)+”] = “); B[x][y]= Lee.datoInt();

}

System.out.println(“nMatriz A:n”);

Obj.Muestra(A,FA,CA);

System.out.println(“nMatriz B:n”);

Obj.Muestra(B,FB,CB);

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++){

h=0;

suma=0;

while(h<CA && h<FB){

suma+=A[h][y]*B[x][h];

h++;

}

S[x][y]=suma;

}

System.out.println(“nLa multiplicacion es:n”);

Obj.Muestra(S,FA,CB);

}

else{

System.out.println(“n Para multiplicarse el numero de columnas de la matriz A tiene que ser igual nal numero de filas de la matriz B”);

}

}

void Division(){

Leer Lee = new Leer();

Operaciones Obj= new Operaciones();

int FB=0;

int CB=0;

int FA=0;

int CA=0;

int suma=0;

float aux=0;

int h=0;

System.out.println(“n Teclee el número de Filas y Columnas para las matrices.”);

System.out.print(“n Filas de A:”); FA=Lee.datoInt();

System.out.print(“n Filas de B:”); FB=Lee.datoInt();

System.out.print(“n Columnas de A:”); CA=Lee.datoInt();

System.out.print(“n Columnas de B:”); CB=Lee.datoInt();

float A[][] = new float [CB][FB];

float B[][] = new float [CB][FB];

float S[][] = new float [CB][FB];

float I[][]         = new float [CB][FB];

float C[][]       = new float [CB][FB];

if(Obj.Compara(CA,FB)){

System.out.println(“nElementeos para A:”);

for(int y=0; y<FA; y++)

for(int x=0; x<CA; x++){

System.out.print(“A[“+(x+1)+”][“+(y+1)+”] = “); A[x][y]= Lee.datoFloat();

}

System.out.println(“nElementeos para B:”);

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++){

System.out.print(“B[“+(x+1)+”][“+(y+1)+”] = “); B[x][y]= Lee.datoFloat();

}

System.out.println(“nMatriz A:n”);

Obj.Muestra(B,FB,CB);

System.out.println(“nMatriz B:n”);

Obj.Muestra(B,FB,CB);

///////////////Matriz inverza de B/////////////////////

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++){

C[x][y]= B[x][y];

if(x==y)

I[x][y]=1;

else

I[x][y]=0;

}

System.out.println(“nMatriz C:(copia de B)n”);

Obj.Muestra(C,FB,CB);

System.out.println(“nMatriz I: (unidad)n”);

Obj.Muestra(I,FB,CB);

System.out.println(“n”);

int k=0;

for(int H=0; H<FB; H++){

if (C[H][H]==0){

System.out.println(“La matriz no tiene inversa, por que el elemento (“+H+”,”+H+”) es cero, nel cual es utilizado como pivote para la inversa.”);

}

else{

C[H][H]*=(1/C[H][H]);                     //Convierte el pivote a 1.

for(int y=H+1; y<FB; y++){

aux=(C[k][y] * -1);

for(int x=0; x<CB; x++){

C[x][y]+=(aux * C[x][H]);

I[x][y]+=(aux * I[x][H]);

}

}

for(int y=0; y<H; y++){

aux=(C[k][y] * -1);

for(int x=0; x<CB; x++){

C[x][y]+=(aux * C[x][H]);

I[x][y]+=(aux * I[x][H]);

}

}

k++;

}

}

System.out.println(“nMatriz inversa :n”);

Obj.Muestra(I,FB,CB);

System.out.println(“nMatriz C:n”);

Obj.Muestra(C,FB,CB);

///////////////////////////////////////////////////////

for(int y=0; y<FB; y++)

for(int x=0; x<CB; x++){

h=0;

suma=0;

while(h<CB && h<FB){

suma+=A[h][y]*I[x][h];

h++;

}

S[x][y]=suma;

}

System.out.println(“nLa division es:n”);

Obj.Muestra(S,FB,CB);

}

else{

System.out.println(“n Para dividirse el numero de columnas de la matriz A tiene que ser igual nal numero de filas de la matriz B, ademas B tiene que ser una matriz cuadrada.”);

}

}

}

Anuncios

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

Categorías

A %d blogueros les gusta esto: