Java - Matriz cuadradas realizar la resta y en un vector poner los numeros pares e impares

 
Vista:

Matriz cuadradas realizar la resta y en un vector poner los numeros pares e impares

Publicado por Sahana (1 intervención) el 18/12/2022 18:25:19
import java.util.Scanner;
public class Principal {

public static void main(String[] args) {
// Leer una matriz cuadrada e imprimir en dos vectores los numero pares e impares
//1.- Ingresar la matriz cuadrada A y B
//2.- Resultado de la resta de la matriz A-B
//3.- Imprimir en el vector V1 los numeros pares
//4.- Imprimir en el vector V2 los numeros impares

Scanner entrada = new Scanner(System.in);
int A[][] = new int [20][20];
int B[][] = new int [20][20];
int V1[][] = new int [20][20];
int Mrest [][] = new int [20][20];
int par [] = new int [20];
int impar [] = new int [20];
int i=0, j=0;
int op, n=0, m=0;
int MC;
do {
System.out.println(" ****** MENU DE OPCIONES ***** ");
System.out.println("1._ Ingresar la matriz cuadrada A y B ");
System.out.println("2._ Imprimir el resultado de la resta de la matriz A-B: ");
System.out.println("3._ Imprimir en el vector V1 los numeros pares e impares ");
System.out.println("4._ Salir ");
System.out.println("*****************************");
System.out.println("Ingrese la opcion a ejecutar: ");
op = entrada.nextInt();
switch (op) {
//1.- Ingresar la matriz cuadrada A y B
case 1:
System.out.println("Ingrese el tamano de la matriz cuadrada A: ");
n = entrada.nextInt();
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
System.out.print("Ingrese el valor["+i+"]["+j+"]: ");
A[i][j]=entrada.nextInt();
}
System.out.println("La matriz A ingresada es: ");
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
System.out.print(A[i][j]+ " ");
System.out.println();
}
System.out.println("Ingrese el tamano de la matriz cuadrada B: ");
m = entrada.nextInt();
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
System.out.print("Ingrese el valor["+i+"]["+j+"]: ");
B[i][j]=entrada.nextInt();
}
System.out.println("La matriz B ingresada es: ");
for (i=0;i<m;i++)
{
for (j=0;j<m;j++)
System.out.print(B[i][j]+ " ");
System.out.println();
}
break;

//2.- Resultado de la resta de la matriz A-B
case 2:
System.out.println("Resta de las dos matrices:");
for( i=0;i<n;i++){
for(j=0;j<m;j++){
Mrest[i][j]=A[i][j]-B[i][j];
System.out.print(Mrest[i][j]+" ");
}
System.out.println();
}

break;

//3.- Imprimir en el vector V1 los numeros pares e impares
case 3:
System.out.println("Los numeros pares son: ");
for(i=0;i<10;i++){
if(Mrest[i] % 2 == 0){
par[i]= Mrest;



}

}

//mostrando impares
System.out.println("Numeros Impares");
for(i=0;i<m;i++){
if(m %2!=0){

}


}

break;

case 4:

System.out.println("Gracias ");
break;
default:
System.out.println("Opcion no definida");
}

}while (op != 4);
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Manolo72

Matriz cuadradas realizar la resta y en un vector poner los numeros pares e impares

Publicado por Manolo72 (18 intervenciones) el 22/01/2023 13:05:27
Quizás este código te ayude, no están todos los casos de error y deberías jugar con él para ver donde puede haber un bug e intentar arregarlo, así te aseguras que entiendes el código.

Por cierto, sería mejor que encapsularas código en métodos externos, para que el código sea más legible, por ejemplo, hacer mínimo un método diferente para cada opción del menú, un método para sacar matrices por consola, otro para la resta, etc.., así verás que todo quedará más fácil y te ayudará a la hora de depurar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class Principal {
 
  public static void main(String[] args) {
    // Leer una matriz cuadrada e imprimir en dos vectores los numero pares e
    // impares
    // 1.- Ingresar la matriz cuadrada A y B
    // 2.- Resultado de la resta de la matriz A-B
    // 3.- Imprimir en el vector V1 los numeros pares
    // 4.- Imprimir en el vector V2 los numeros impares
 
    Scanner entrada = new Scanner(System.in);
    // Todavía no inicializes nada, no gastes recursos si puede hacer un error
    int A[][] = null;
    int B[][] = null;
    int Mrest[][] = null; // Mrest = A - B
    // int i = 0, j = 0; // No hace falta que inicialices las variables del bucle antes del mismo, esto no es C
    int op = 0; // Con op nos basta, n y m están en el mismo case y pueden ser internas, luego usaremos las dimensiones de A ó B para los demás bucles
    try { // Por si el usuario introduce cosas raras que no sean un numero entero
      do {
        System.out.println(" ****** MENU DE OPCIONES ***** ");
        System.out.println("1._ Ingresar la matriz cuadrada A y B ");
        System.out.println("2._ Imprimir el resultado de la resta de la matriz A-B: ");
        System.out.println("3._ Imprimir en el vector V1 los numeros pares e impares ");
        System.out.println("4._ Salir ");
        System.out.println("*****************************");
        System.out.print("Ingrese la opcion a ejecutar: "); // Cuando ingreses algo por pantalla, ponlo en la misma linea que el mensaje
        op = entrada.nextInt();
        switch (op) {
          // 1.- Ingresar la matriz cuadrada A y B
          case 1:
            System.out.print("Ingrese el tamano de la matriz cuadrada A: ");
            int n = entrada.nextInt();
            A = new int[n][n];
            for (int i = 0; i < n; i++)
            {
              for (int j = 0; j < n; j++)
              {
                System.out.print("Ingrese el valor[" + i + "][" + j + "]: ");
                A[i][j] = entrada.nextInt();
              }
            }
            if( A != null)
            {
              // Por si ha habido algún error constuyendo la matriz
              System.out.println("La matriz A guardada es: ");  // Por si habia una guardada anteriormente y ha habido un fallo construyendo una nueva
              for (int i = 0; i < A.length; i++)
              {
                for (int j = 0; j < A[0].length; j++)
                {
                  System.out.print(A[i][j] + " ");
                }
                System.out.println();
              }
            }
            System.out.print("Ingrese el tamano de la matriz cuadrada B: ");
            int m = entrada.nextInt();
            if( m != n)
            {
              // Si no tienen las mismas dimensiones no se pueden restar.
              // Otra opción es que no des esta opción al usuario y directamente pases a introducir los valores de B
              System.err.println("ERROR: la matriz B debe tener las mismas dimensiones que A (" + n + " x " + n +")");
            }
            else{
              // Las dimensiones coinciden, se crea la matriz y se rellena
              B = new int[m][m];
              for (int i = 0; i < m; i++)
              {
                for (int j = 0; j < m; j++)
                {
                  System.out.print("Ingrese el valor[" + i + "][" + j + "]: ");
                  B[i][j] = entrada.nextInt();
                }
              }
            }
            if( B != null)
            {
              // Por si ha habido algún error constuyendo la matriz
              System.out.println("La matriz B ingresada es: ");   // Por si habia una guardada anteriormente y ha habido un fallo construyendo una nueva
              for (int i = 0; i < B.length; i++)
              {
                for (int j = 0; j < B[0].length; j++)
                {
                  System.out.print(B[i][j] + " ");
                }
                System.out.println();
              }
            }
            System.out.println();
            break;
 
          // 2.- Resultado de la resta de la matriz A-B
          case 2:
            System.out.println("Resta de las dos matrices:");
            // Asegurate que las matrices están introducidas, si no lanza un error
            if (A == null && B == null) {
              System.out.println("Al menos una matriz no está creada. Creelas con la opción 1 del menú");
            } else {
              // Las matrices han sido creadas, se restan
              Mrest = new int[A.length][A[0].length];
              for (int i = 0; i < A.length; i++)
              {
                for (int j = 0; j < A[0].length; j++)
                {
                  Mrest[i][j] = A[i][j] - B[i][j];
                  System.out.print(Mrest[i][j] + " ");
                }
                System.out.println();
              }
            }
            System.out.println();
            break;
 
          // 3.- Imprimir en el vector V1 los numeros pares e impares
          case 3:
            System.out.println("Los numeros pares son: ");
            // Lo primero es asegurarse de que existe la matriz resta
            if( Mrest == null)
            {
              System.err.println("ERROR, no se ha producido la resta. Hagala con la copción 2 del menú");
            }
            else{
              // A priori no tenemos ni idea de cuantos serán pares o impares, así que usamos una Lista
              List<Integer> par   = new ArrayList<>();
              List<Integer> impar = new ArrayList<>();
              for (int i = 0; i < Mrest.length; i++)
              {
                for (int j = 0; j < Mrest[0].length; j++)
                {
                  if( (Mrest[i][j] & 1) == 0 ) // Opción más eficiente que Mrest[i][j] % 2 == 0
                  {
                    par.add( Mrest[i][j] );       // Numero par añadido
                  }
                  else{
                    impar.add( Mrest[i][j] );     // Numero impar añadido
                  }
                }
              }
              // Una vez terminado, se recorren las listas y se muestran los resultados
              // Las listas se ven claramente en consola, no hace falta bucle
              // Se añade además una opción más clara por si no hay ningún número par o impar
              System.out.println( (!par.isEmpty()) ? "Números pares: " + par : "La resta no ha dado ningún numero par");
              System.out.println( (!impar.isEmpty()) ? "Números impares: " + impar : "La resta no ha dado ningún numero impar" );
            }
            System.out.println();
            break;
 
          case 4:
            // _Salir
            System.out.println("Gracias ");
            break;
 
          default:
            System.out.println("Opcion no definida\n");
        }
 
      } while (op != 4);
    } catch (Exception e) {
      System.err.println("ERROR: No hay introducido un número, " + e);
    }
    finally{
      entrada.close(); // Siempre hay que cerrar la instancia de Scanner
    }
  }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar