HELP MY PLEASE !!! PROGRAMA JAVA MATRICES

gastonemeN
06 de Diciembre del 2008
AYUDA , tengo este programita y no cacho porque la matriz no recibe nada, ¿algo del main?, se me imagina que tiene que haber un contructor de la matriz pero no cacho como hacerlo...


si alguien se pega la paelitada de ayudarme !!! gracias

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

/* recordar que en el constructor tiene que existir una matrizA, una matrizB y una matrizR (de Resultado)
* el llenado de las matrices A y B tienen que ser por teclado, las operaciones de las matrices
* estan en el menu !!!!!!
*/

public class MetodoMatriz{

public void llenadoMatrizA (int d){
int [][]matrizA =new int[d][d];
int i,j;
for (i=0;i<matrizA.length;i++){
for(j=0;j<matrizA.length;j++){
System.out.println("Ingrese numeros enteros en la posicion"+i+j+" :");
matrizA[i][j]=d;
}
}
}

public void llenadoMatrizB (int d){
int [][]matrizB =new int[d][d];
int i,j;
for (i=0;i<matrizB.length;i++){
for(j=0;j<matrizB.length;j++){
System.out.println("Ingrese numeros enteros en la posicion"+i+j+" :");
matrizB[i][j]=d;
}
}
}
}


---------------------------------------------------------------------------------
---------------------------------------------------------------------------------

import java.io.*;
class MainMenu {
public static void main (String [] args) throws IOException{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader entrada = new BufferedReader (isr);
MetodoMatriz m = new MetodoMatriz();
boolean menu;
menu=true;
while(menu==true){
int opt,d;
System.out.println("MENU MATRICESn1.- Llenado Matriz A n2.- Llenado Matriz Bn3.- " +
"Sacar Determinandte Matriz A n4.- Matriz Transpuesta de A n5.- Producto Escalar de la Matriz A n6.- " +
"Sumar Matriz A y B n7.- Restar Matriz A y B n8.- Multiplicar Matriz A y B " +
"n9.- para salir");
opt=Integer.parseInt(entrada.readLine());
switch(opt){

case 1:
System.out.println("Ingrese Valores a la Matriz A:");
d=Integer.parseInt(entrada.readLine());
m.llenadoMatrizA(d);
System.out.println("Matriz A, llenada");
break;

case 2:
System.out.println("Ingrese Valores a la Matriz B:");
d=Integer.parseInt(entrada.readLine());
m.llenadoMatrizB(d);
System.out.println("Matriz B, llenada");
break;

case 9:
System.out.println("adios!!");
menu=false;
break;
}
}
}
}

hadrien
06 de Diciembre del 2008
Hay varias cosas incorrectas:
Para llenar una matriz lo primero que debes hacer es pedir las dimensiones de la matriz. Por lo que podemos observar en tu código, das por supuesto que tu matriz es cuadrada, es decir NxN, o dxd, en tu caso.
Luego, cuando llamas a la función llenadoMatriz, no estás pidiendo ningún valor y, por tanto, no estás llenando la matriz. De hecho, sí la estás llenando, pero con el valor de d...
Además, la función de llenado de una matriz debe valer para cualquiera, es decir, con una función es suficiente.
Y por último, lo más importante, ¿dónde estás guardando las matrices? No tienes ninguna variable declarada y la de la función llenadoMatriz muere cuando se termina la función, sin que hayas hecho nada con ella.
Un consejo: piensa en orientación a objetos, no en programación imperativa.

gastonemeN
06 de Diciembre del 2008
gracias por las observaciones, me puedes ayudar a mejorar el programa, e faltado a muchas clases por estar enfermo y es un trabajo para notas !!!!

se que tendria que usar un constructor para crear las matrices, el problema es que no se donde creo el constructor

hadrien
06 de Diciembre del 2008
Debes seguir y tener en cuenta todos los puntos que te he comentado antes y, por supuesto, debes o bien crear una clase matriz con sus atributos, constructores y métodos o bien definir y usar las matrices como haces en el programa main, teniendo en cuenta que debes pasarlas cómo parámetro en las funciones.
Aquí tienes este tutorial básico sobre Java:
http://www.programacion.com/java/tutorial/java_basico/

gastonemeN
06 de Diciembre del 2008
chicos por favor su ayuda, en el metodo de determinante me tira error, quien le puede echar un vistaso gracias


*************************************************************************************

import java.io.*;
public class MainMenu {

static ConstructorMatrix MA;//para las matrices genericas
static ConstructorMatrix MB;

public static void main(String[] args) throws IOException{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader entrada = new BufferedReader (isr);
ConstructorMatrix cm=new ConstructorMatrix();
boolean menu;
menu=true;
while(menu==true){
int opt,tamf,tamc;
tamf=0;tamc=0;
double deter=1.0;
System.out.println("MENU MATRICESn1.- Llenado Matriz A n2.- Llenado Matriz Bn3.- " +
"Sacar Determinandte Matriz A n4.- Matriz Transpuesta de A n5.- Producto Escalar de la Matriz A n6.- " +
"Sumar Matriz A y B n7.- Restar Matriz A y B n8.- Multiplicar Matriz A y B " +
"n9.- para salir");
opt=Integer.parseInt(entrada.readLine());
switch(opt){
case 1://llenado Matriz A
System.out.println("Ingrese Fila:");
tamf=Integer.parseInt(entrada.readLine());
System.out.println("Ingrese Columnas:");
tamc=Integer.parseInt(entrada.readLine());
System.out.println("Ingrese Valores a la Matriz A:");
MA=new ConstructorMatrix(tamf,tamc);
MA.Llenar(MA);
System.out.println("Matriz A, llenada");
MA.Mostrarmatrix();
break;

case 2://llenado Matriz B
System.out.println("Ingrese Fila:");
tamf=Integer.parseInt(entrada.readLine());
System.out.println("Ingrese Columnas:");
tamc=Integer.parseInt(entrada.readLine());
System.out.println("Ingrese Valores a la Matriz B:");
MB=new ConstructorMatrix(tamf,tamc);
MB.Llenar(MB);
System.out.println("Matriz B, llenada");
MB.Mostrarmatrix();
break;

case 3://Determinante Matriz
deter=cm.determinate();
System.out.println("El Detarminante de Matriz A es :"+deter);
break;

case 4://Matriz Transpuesta de MA
System.out.println("La Matriz Transpuesta de A es :");
MA.transpuesta();
break;

case 5://producto escalar de la matriz A
MA.escalarMatriz();
break;

case 6://suma de Matrices MA + MB
System.out.println("La Suma de Matriz A + B es :");
MA.sumar(MB);
break;

case 7://resta de Matrices MA - MB
System.out.println("La Resta de Matriz A + B es :");
MA.resta(MB);
break;

case 8: //multiplicar MA * MB
System.out.println("La Multiplicacion de Matriz A * B es :");
MA.multiplica(MB);

case 9://salida del menu
System.out.println("Fin de la aplicacion...Adios!!");
menu=false;
break;
}
}
}
}//del main

********************************************************************************

import java.io.*;


public class ConstructorMatrix {
float A[][];
int tamanof;
int tamanoc;
public ConstructorMatrix(){

}
public ConstructorMatrix (int fila,int columna ){
tamanof=fila;
tamanoc=columna;
this.A=new float[fila][columna];
}

public void Llenar(ConstructorMatrix d)throws IOException{
BufferedReader in=new BufferedReader (new InputStreamReader(System.in));
for(int i=0;i<tamanof;i++){
for (int j=0;j<tamanoc;j++){
try{
System.out.println("Ingrese numeros enteros en la posicion"+i+j+" :");
d.A[i][j]=Float.parseFloat(in.readLine());
}
catch(Exception e){
System.out.println("Error en la operacion inesperada...");
}
}
}
}
public void Mostrarmatrix(){
int i,j;
for(i=0;i<A.length;i++){
System.out.println();
for(j=0;j<A[i].length;j++){
System.out.print("t"+A[i][j]);
}
}
System.out.println();
}
public void sumar (ConstructorMatrix a){
ConstructorMatrix R=new ConstructorMatrix(a.tamanof,a.tamanoc);
int i,j;
for(i=0;i<a.A.length;i++){
for(j=0;j<a.A[i].length;j++){
try{
R.A[i][j] = a.A[i][j]+a.A[i][j];
}
catch(Exception e){
System.out.println("Error en la operacion inesperada...");
}
}
}
R.Mostrarmatrix();
}

public void resta (ConstructorMatrix a){
ConstructorMatrix R=new ConstructorMatrix(a.tamanof,a.tamanoc);
int i,j;
for(i=0;i<a.A.length;i++){
for(j=0;j<a.A[i].length;j++){
try{
R.A[i][j] = a.A[i][j]-a.A[i][j];
}
catch(Exception e){
System.out.println("Error en la operacion inesperada...");
}
}
}
R.Mostrarmatrix();
}
public void multiplica(ConstructorMatrix a){
int i,j,k;
ConstructorMatrix R = new ConstructorMatrix (a.tamanof,a.tamanoc);
for(i=0;i<A.length;i++){
for(j=0;j<A.length;j++){
for(k=0;k<A.length;k++){
try{
R.A[i][j]+=A[i][k]*a.A[k][j];
}
catch(Exception e){
System.out.println("Error en la operacion inesperada...");
}
}
}
}
R.Mostrarmatrix();
}

public void transpuesta(){
ConstructorMatrix R = new ConstructorMatrix (tamanof,tamanoc);
int i,j;
for(i=0;i<A.length;i++)
for(j=0;j<A[i].length;j++)
R.A[j][i]=A[i][j];
R.Mostrarmatrix();
}

public void escalarMatriz()throws IOException{
BufferedReader in=new BufferedReader (new InputStreamReader(System.in));
ConstructorMatrix R = new ConstructorMatrix(tamanof, tamanoc);
float escalar;
System.out.println("Ingrese Numero Escalar para Matriz A:");
escalar=Float.parseFloat(in.readLine());
int i,j;
for(i=0;i<A.length;i++){
for(j=0;j<A[i].length;j++){
R.A[i][j]=escalar*A[i][j];
}
}
R.Mostrarmatrix();
}

public double determinate() {
for(int k=0; k<A.length-1; k++) {
for(int i=k+1; i<A[0].length; i++){
for(int j=k+1; j<A.length; j++){
A[i][j]-=A[i][k]*A[k][j]/A[k][k];
}
}
}
double deter=1.0;
for(int i=0; i<A.length; i++){
deter*=A[i][i];
}
return deter;
}


}//de main constructor