ACTIVIDAD OPCIONAL - PARIDAD
CALCULO DE PARIDAD
El programa cuenta de tres clases como se puede ver a continuación:
La clase ejecutar se compone únicamente del método main que llamará a nuestro menú, que estará en la clase MenuDeOpciones y que sera la que lleve todo el programa a cabo.
public class Ejecutar {
public static void main(String[] args) {
MenuDeOpciones m = new MenuDeOpciones();
m.menu();
}
}
La clase ventana sera la encargada de crearnos la ventana sobre la que luego vamos a escribir y mostrar todo el programa.
public class Ventana extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
public int i = 0;
public JTextArea a = new JTextArea();
public JTextField b = new JTextField();
public Ventana() {
setBounds(0, 0, 500, 625);
setResizable(false);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a.setBounds(0, 0, 500, 500);
a.setEditable(false);
add(a);
b.setBounds(0, 525, 200, 30);
add(b);
b.addActionListener(this);
}
public void escribir(String texto) {
a.append(texto);
}
public void setTexto() {
a.setText("");
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
i = Integer.parseInt(b.getText());
b.setText("");
}
public int getI() {
return i;
}
public void setI() {
i = 0;
}
}
La clase más importante de este proyecto es MenuDeOpciones donde se realizan los cálculos necesarios para la ejecución del programa en todas sus opciones.
public class MenuDeOpciones {
private int[][] matriz;
private Random azar;
private int[][] matriz2 = new int[6][5];
private int paridad = 0;
private int[][] matriz3 = new int[6][5];
private Ventana v = new Ventana();
private int opcion;
public MenuDeOpciones() {
matriz = new int[5][4];
azar = new Random();
v.setVisible(true);
}
public void menu() {
v.escribir("MENU DE OPCIONES\n");
v.escribir("-----------------\n");
v.escribir("1.RELLENAR MATRIZ\n");
v.escribir("2.GENERAR 20 + 10 BITS\n");
v.escribir("3.MODIFICAR UN BIT\n");
v.escribir("4.COMPROBAR\n");
v.escribir("5.CORREGIR/MOSTRAR MATRIZ ORIGINAL\n");
v.escribir("6.MOSTRAR BITS EN MATRIZ\n");
v.escribir("7.SALIR\n");
while (opcion != 7) {
opcion = v.getI();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (funcionamiento() == true) {
switch (opcion) {
case 1:
rellenarMatriz();
break;
case 2:
generar();
break;
case 3:
modificar();
break;
case 4:
comprobar();
break;
case 5:
corregir();
break;
case 6:
mostrar(matriz);
break;
case 7:
salir();
default:
v.escribir("");
}
v.setI();
v.escribir("MENU DE OPCIONES\n");
v.escribir("-----------------\n");
v.escribir("1.RELLENAR MATRIZ\n");
v.escribir("2.GENERAR 20 + 10 BITS\n");
v.escribir("3.MODIFICAR UN BIT\n");
v.escribir("4.COMPROBAR\n");
v.escribir("5.CORREGIR/MOSTRAR MATRIZ ORIGINAL\n");
v.escribir("6.MOSTRAR BITS EN MATRIZ\n");
v.escribir("7.SALIR\n");
opcion = v.getI();
}
}
}
private void salir() {
v.setTexto();
try {
v.escribir("PROCESO TERMINADO");
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}
private void mostrar(int[][] t) {
v.setTexto();
for (int i = 0; i <= t.length - 1; i++) {
for (int j = 0; j <= t[0].length - 1; j++) {
v.escribir(t[i][j] + "\t");
}
v.escribir("\n");
}
v.setI();
v.escribir("\n");
}
private void corregir() {
if (paridad == 0) {
paridadPar();
} else {
paridadImpar();
}
mostrar(matriz2);
}
private void comprobar() {
// PARIDAD PAR
if (paridad == 0) {
int conta = 0;
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
matriz3[i][j] = matriz[i][j];
}
}
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
if (matriz[i][j] == 1) {
conta++;
}
}
if (conta % 2 == 0) {
matriz3[i][4] = 0;
conta = 0;
} else {
matriz3[i][4] = 1;
conta = 0;
}
}
for (int i = 0; i < matriz.length - 1; i++) {
for (int j = 0; j < matriz.length; j++) {
if (matriz[j][i] == 1) {
conta++;
}
}
if (conta % 2 == 0) {
matriz3[5][i] = 0;
conta = 0;
} else {
matriz3[5][i] = 1;
conta = 0;
}
}
for (int i = 0; i <= matriz3.length - 1; i++) {
for (int j = 0; j <= matriz3[0].length - 1; j++) {
if (matriz3[i][j] == matriz2[i][j]) {
conta++;
}
}
}
if (conta == 30) {
v.escribir("COMPROBACION CORRECTA\n");
} else {
v.escribir("COMPROBACION ERRONEA\n");
}
}
// PARIDAD IMPAR
if (paridad == 1) {
int conta = 0;
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
matriz3[i][j] = matriz[i][j];
}
}
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
if (matriz[i][j] == 1) {
conta++;
}
}
if (conta % 2 == 0) {
matriz3[i][4] = 1;
conta = 0;
} else {
matriz3[i][4] = 0;
conta = 0;
}
}
for (int i = 0; i < matriz.length - 1; i++) {
for (int j = 0; j < matriz.length; j++) {
if (matriz[j][i] == 1) {
conta++;
}
}
if (conta % 2 == 0) {
matriz3[5][i] = 1;
conta = 0;
} else {
matriz3[5][i] = 0;
conta = 0;
}
}
for (int i = 0; i <= matriz3.length - 1; i++) {
for (int j = 0; j <= matriz3[0].length - 1; j++) {
if (matriz3[i][j] == matriz2[i][j]) {
conta++;
}
}
}
if (conta == 30) {
v.escribir("COMPROBACION CORRECTA\n");
} else {
v.escribir("COMPROBACION ERRONEA\n");
}
}
}
private void modificar() {
int f = 0;
int c = 0;
v.setTexto();
v.escribir("INTRODUZCA LA FILA NUMERO A MODIFICAR\n");
try {
Thread.sleep(2000);
f = v.getI();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
v.escribir("INTRODUZCA LA COLUMNA NUMERO A MODIFICAR\n");
try {
Thread.sleep(2000);
c = v.getI();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
v.escribir("INTRODUZCA EL NUEVO VALOR\n");
try {
Thread.sleep(2000);
matriz[f][c] = v.getI();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void generar() {
v.setTexto();
v.escribir("0.PARIDAD PAR\n");
v.escribir("1.PARIDAD IMPAR\n");
while (opcion != 0 && opcion != 1) {
opcion = v.getI();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
switch (opcion) {
case 0:
paridadPar();
break;
case 1:
paridadImpar();
break;
default:
v.escribir("");
}
}
v.setI();
// v.setTexto();
}
private void paridadImpar() {
int conta = 0;
paridad = 1;
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
matriz2[i][j] = matriz[i][j];
}
}
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
if (matriz[i][j] == 1) {
conta++;
}
}
if (conta % 2 == 0) {
matriz2[i][4] = 1;
conta = 0;
} else {
matriz2[i][4] = 0;
conta = 0;
}
}
for (int i = 0; i < matriz.length - 1; i++) {
for (int j = 0; j < matriz.length; j++) {
if (matriz[j][i] == 1) {
conta++;
}
}
if (conta % 2 == 0) {
matriz2[5][i] = 1;
conta = 0;
} else {
matriz2[5][i] = 0;
conta = 0;
}
}
mostrar(matriz2);
v.escribir("\n");
}
private void paridadPar() {
paridad = 0;
int conta = 0;
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
matriz2[i][j] = matriz[i][j];
}
}
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
if (matriz[i][j] == 1) {
conta++;
}
}
if (conta % 2 == 0) {
matriz2[i][4] = 0;
conta = 0;
} else {
matriz2[i][4] = 1;
conta = 0;
}
}
for (int i = 0; i < matriz.length - 1; i++) {
for (int j = 0; j < matriz.length; j++) {
if (matriz[j][i] == 1) {
conta++;
}
}
if (conta % 2 == 0) {
matriz2[5][i] = 0;
conta = 0;
} else {
matriz2[5][i] = 1;
conta = 0;
}
}
mostrar(matriz2);
v.escribir("\n");
}
private void rellenarMatriz() {
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[0].length; j++) {
matriz[i][j] = azar.nextInt(2);
}
}
v.setI();
v.setTexto();
}
private boolean funcionamiento() {
opcion = v.getI();
if (opcion > 0 && opcion <= 7) {
return true;
}
return false;
}
}
Para descargar el ejecutable del programa y la carpeta del proyecto Pinche Aqui.

0 comentarios: