Академический Документы
Профессиональный Документы
Культура Документы
Exercício 03
Obs.: Esta atividade deverá ser realizada por uma equipe de 02 (dois) alunos.
EXERCÍCIO: Utilizando as informações disponíveis na página da disciplina (ou em
outras fontes), implemente, utilizando uma linguagem de programação de sua
preferência, um código para detecção de erro (paridade) e um para detecção e correção
de erro (Hamming). Forneça cada código e exemplos que validem o seu funcionamento
adequado. Obs: Como atividade adicional, implemente também o Código CRC (Código
de Redundância Cíclica).
detecção de erro (paridade)
public class Paridade {
public static void main(String[] args) {
String[] entrada = { "1", "0", "1", "0" };
String[] entrada2 = {"0", "0", "1", "0" };
String[] entrada3 = {"1", "0", "1", "0" };
String[] entrada4 = {"0", "1", "1", "0" };
String[] retorno1 = paridade(entrada);
String[] retorno2 = paridade(entrada2);
String[] retorno3 = paridade(entrada3);
String[] retorno4 = paridade(entrada4);
System.out.println("Bits enviados: " + Arrays.toString(entrada));
System.out.println("Recebido: " + Arrays.toString(entrada2));
System.out.println("Deu erro? " +
!Arrays.toString(retorno1).equals(Arrays.toString(retorno2)));
System.out.println();
System.out.println("Bits enviados: " + Arrays.toString(entrada));
System.out.println("Recebido: " + Arrays.toString(entrada3));
System.out.println("Deu erro? " +
!Arrays.toString(retorno1).equals(Arrays.toString(retorno3)));
System.out.println();
System.out.println("Bits enviados: " + Arrays.toString(entrada));
System.out.println("Recebido: " + Arrays.toString(entrada4));
System.out.println("Deu erro? " +
!Arrays.toString(retorno1).equals(Arrays.toString(retorno4)));
}
public static String[] paridade(String[] bits) {
String[] retorno = new String[bits.length + 1];
int cont = 0;
for (int i = 0; i < bits.length; i++) {
if (bits[i].equals("1")) {
cont++;
}
}
if (cont % 2 == 0) {
int cont2 = 0;
for (int i = 0; i < bits.length; i++) {
if (i == 0) {
retorno[cont2++] = "0";
retorno[cont2++] = bits[i];}
else
retorno[cont2++] = bits[i];
}
} else {
int cont2 = 0;
for (int i = 0; i < bits.length; i++) {
if (i == 0) {
retorno[cont2++] = "1";
retorno[cont2++] = bits[i];
}
else
retorno[cont2++] = bits[i];
}
}
return retorno;
}
}
detecção de erro (Hamming)
int main() {
int data[10];
int dataatrec[10],c,c1,c2,c3,i;
c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];
c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];
c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];
c=c3*4+c2*2+c1 ;
if(c==0) {
cout<<"\nNo error while transmission of data\n";
}
else {
cout<<"\nError on position "<<c;
return 0;
}
Funcionamento