0 votos
por (20 puntos) en Java
hola, saben tengo una duda y que a la ves es un problema. Veran tengo un pequeño progrma que convierte texto a codigo binario, el problema al convertir el texto a codigo binario hay que tomar cadi uno de los caracteres que contiene el texto y leer si no pares o inpares y de esa forma agregarle un bit de paridad. EJEMPLO:

<pre>H-->1001000-------> le agregaria un 0 por la por que la cantidad de 1 es par
O-->1001111-------> le agregaria un 1 para volverlo par
L-->1001100-------> le agregaria un 1 para volverlo par
A-->1000001-------> le agregaria un 0 por la por que la cantidad de 1 es par
y asi hacer lo mismo con cualquier frace. este es el codigo que tengo pero me esta generando problemas:

<pre lang='java'>public class Vrc {
    static String texto,dato_by,par="",inpar="";
   static String imp="";
   static int[] texby,bypar,byinpar;
   static int sum=1;
   public static void main (String args[]) throws IOException{
       BufferedReader dato=new BufferedReader(new InputStreamReader(System.in));
       System.err.print("Introdusca una palabra:");
       texto=dato.readLine().toUpperCase();
      int unidad=0;
      for (int i=0; i<texto.length(); i++){
      unidad=texto.charAt(i);
      dato_by=Integer.toBinaryString(unidad);
      String pasar=String.valueOf(dato_by);

      for(int j=0 ;j<pasar.length(); j++){
          sum=Integer.parseInt(pasar.charAt(j)+"");
     }
       if(sum%2==0){
                par+="1"+dato_by+" ";
              inpar+="0"+dato_by+" ";}
          else {
                par+="0"+dato_by+" ";
              inpar+="1"+dato_by+" ";
           }// System.out.print("datos de sum: "+sum);

      System.out.print(texto.charAt(i)+"-->"+dato_by+"n");
      texby=new int[texto.length()];
      texby[i]=Integer.parseInt(dato_by);
      imp+=texby[i]+" ";
      }
      System.out.println("Codificacion binaria: "+imp
                       + "nBit de paridad par:   "+par
                       + "nBit de paridad impar: "+inpar
                       + "nTexto recibido: "+texto);
      } }
 LA SALIDA QUE ME ARROGA ES LA SIGUIENTE:

Introdusca una palabra:HOLA

H-->1001000

O-->1001111

L-->1001100

A-->1000001

Codificacion binaria: 1001000 1001111 1001100 1000001

Bit de paridad par:   11001000 01001111 11001100 01000001

Bit de paridad impar: 01001000 11001111 01001100 11000001

Texto recibido: HOLA

TENDRAN UNA IDEA DE COMO HACERLO PARA QUE NO ME FALLE


1 Respuesta

0 votos
por (8.5k puntos)
Buenas,

Es una duda de Java, no de General.

Falta formatear el código para que sea visible. http://www.dudasprogramacion.com/topic/ayuda-foro-como-poner-codigo-fuente

Se escribe: iMpar, introduZca, arroJa, etc



public class Paridad {

    public static void main (String args[]) throws IOException
    {

        String texto;

        String[] texby,bypar,byimpar;

        int sum=0;

        BufferedReader dato=new BufferedReader(new InputStreamReader(System.in));
        System.err.print("Introduzca una palabra:");
        texto=dato.readLine().toUpperCase();
        texby=new String[texto.length()];
        bypar=new String[texto.length()];
        byimpar=new String[texto.length()];

        int unidad=0;
        for (int i=0; i<texto.length(); i++){
            unidad=texto.charAt(i);
            //Guardamos la la cadena en binario
            texby[i] = Integer.toBinaryString(unidad);

            for(int j=0; j < texby[i].length(); j++){
                sum+=Integer.parseInt(texby[i].charAt(j)+"");
            }
            if(sum % 2 == 0){
                bypar[i] = "0"+texby[i]+" ";
                byimpar[i] = "1"+texby[i]+" ";}
            else {
                bypar[i] = "1"+texby[i]+" ";
                byimpar[i] = "0"+texby[i]+" ";
            }// System.out.print("datos de sum: "+sum);
            sum = 0;
            System.out.print(texto.charAt(i)+"-->"+texby[i]+"n");

        }
        System.out.println("Codificacion binaria: ");
        pintarArrayStrings(texby);
        System.out.println("nBit de paridad par: ");
        pintarArrayStrings(bypar);
        System.out.println("nBit de paridad impar: ");
        pintarArrayStrings(byimpar);
        System.out.println("nTexto recibido: " + texto);
    }

    static void pintarArrayStrings (String array[])
    {
        for(int j=0; j < array.length; j++){
            System.out.print(array[j]+" ");
        }
    }
}

Preguntas relacionadas

+1 voto
3 respuestas
0 votos
0 respuestas
0 votos
1 respuesta
preguntado por redm23 (200 puntos) Ene 28, 2016 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...