Guest User

Untitled

a guest
Jun 17th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. public class Code3 {
  2.  
  3. private enum Erreur {
  4. CORRECTION, ERREUR, CORRECT }
  5.  
  6. private Erreur[] tab;
  7.  
  8. private boolean gestionErreurs;
  9.  
  10. /**
  11. * Constructeur
  12. **/
  13. public Code3(boolean bool){
  14. gestionErreurs = bool;
  15. }
  16. /**
  17. * Méthode coder
  18. **/
  19. public byte[][] coder(byte[] leTab) {
  20. byte[][] res = new byte[3][leTab.length];
  21. for (int i = 0; i < 3; i++){
  22. res[i] = leTab.clone();
  23. }
  24. return res;
  25. }
  26.  
  27. /**
  28. * Méthode decoder
  29. **/
  30. public byte[] decoder(byte[][] leTab) {
  31. byte[] res = new byte[leTab[0].length];
  32. tab = new Erreur[leTab[0].length];
  33.  
  34. for(int j = 0; j < tab.length; j++)
  35. tab[j] = Erreur.CORRECTION;
  36.  
  37. for(int k = 0; k < leTab[0].length; k++)
  38. if( leTab[0][k] == leTab[1][k] && leTab[0][k] == leTab[2][k])
  39. tab[k] = Erreur.CORRECT;
  40.  
  41. for(int k = 0; k < leTab[0].length; k++)
  42. if( leTab[0][k] != leTab[1][k] && leTab[0][k] != leTab[2][k] && leTab[1][k] != leTab[2][k])
  43. tab[k] = Erreur.ERREUR;
  44.  
  45. for (int i = 0; i < leTab[0].length; i++) {
  46. res[i] = leTab[0][i];
  47. if ( leTab[0][i] != leTab[1][i] )
  48. if(leTab[1][i] == leTab[2][i])
  49. res[i] = leTab[1][i];
  50. }
  51. return res;
  52. }
  53.  
  54. /**
  55. * getteur
  56. **/
  57. public Erreur[] getErrors() {
  58. //if(gestionErreurs == true)
  59. return tab.clone();
  60. }
  61.  
  62.  
  63. /**
  64. * TestCode3.java
  65. * Pour tester Code3 avec énumération.
  66. */
  67.  
  68. public static void main(String[] args) {
  69. byte[] data = {1, 2, 3, 4, 5, 6};
  70.  
  71. // Le paramètre true indique que l'on souhaite avoir un rapport sur les erreurs
  72. // et les corrections effectuées par le code correcteur (ligne "Erreurs et corrections"
  73. // de l'exemple d'affichage donné dans l'énoncé).
  74. Code3 code = new Code3(true);
  75. byte[][] data2 = code.coder(data);
  76.  
  77. // Affiche le tableau codé tel qu'il aurait dû être
  78. // si pas d'erreur de transmission.
  79. System.out.println("Le tableau codé si pas d'erreur de transmission :");
  80. for (int i = 0; i < data2.length; i++) {
  81. for (int j = 0; j < data2[i].length; j++) {
  82. // Variante de print "à la C" étudiée dans la suite du cours
  83. // Vous pouvez remplacer par une simple print(data2[i][j] + ";")
  84. System.out.printf("%3d", data2[i][j]);
  85. }
  86. System.out.println();
  87. }
  88.  
  89. // Pour simuler des erreurs de transmission
  90. // Erreur de transmission sur 1er et 2ème octet transmis ;
  91. // le code corrigera l'erreur.
  92. data2[0][0] = 15;
  93. data2[0][1] = 20;
  94. // Double erreur de transmission sur octet 3 transmis ;
  95. // le code indiquera une erreur non corrigeable.
  96. data2[1][2] = 10;
  97. data2[0][2] = 25;
  98. // Double erreur de transmission sur octet 4 transmis
  99. // mais qui fait croire à une correction possible ;
  100. // le résultat donné par le décodage sera erroné.
  101. data2[1][3] = 30;
  102. data2[2][3] = 30;
  103.  
  104. // Affiche le tableau codé reçu
  105. System.out.println("Le tableau codé reçu :");
  106. for (int i = 0; i < data2.length; i++) {
  107. for (int j = 0; j < data2[i].length; j++) {
  108. System.out.printf("%3d", data2[i][j]);
  109. }
  110. System.out.println();
  111. }
  112.  
  113. System.out.println("Le tableau corrigé :");
  114. byte[] data3 = code.decoder(data2);
  115. for (int i = 0; i < data3.length; i++) {
  116. System.out.printf("%3d", data3[i]);
  117. }
  118.  
  119. System.out.println();
  120. System.out.println("Erreurs et corrections :");
  121. // C'est à vous de trouver un moyen de savoir si le décodage
  122. // a effectué des corrections ou a rencontré des problèmes (3 octets différents).
  123. Erreur[] erreurs = code.getErrors();
  124. for(int i = 0; i < erreurs.length; i++){
  125. System.out.print(erreurs[i] + " ");
  126. }
  127. }
  128.  
  129. }
Add Comment
Please, Sign In to add comment