Advertisement
FabioHouse

Hamming Prove

Feb 9th, 2014
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  1.  
  2.  
  3. #include <stdio.h>
  4.  
  5. int controllo_hamming(int contatore, char *stringa, int i);
  6. int scomposizione(int contatore, char *stringa, int i);
  7. int scomposizione2(int contatore, char *stringa,int i,int stop);
  8. int scomposizione4(int contatore, char *stringa,int i,int stop);
  9. int scomposizione8(int contatore, char *stringa,int i,int stop);
  10. int scomposizione16(int contatore, char *stringa, int i);
  11. int main(){
  12. char stringa[25]="0110000001110111001110110";
  13. int contatore,cont[5],dim=25,parit=0,i=0;
  14. printf("Prova 1\n");
  15. cont[0]=scomposizione(contatore=0, stringa, i=0);
  16. /*cont[1]=scomposizione2(contatore=0, stringa, i=1, 0);
  17. cont[2]=scomposizione4(contatore=0, stringa, i=3, 0);
  18. cont[3]=scomposizione8(contatore=0, stringa, i=7, 0);
  19. cont[4]=scomposizione16(contatore=0, stringa, i=15);*/
  20. printf("2 \n");
  21. for(i=0;i<1;i++)
  22. printf("Controllo valore cont ---> %d \n",cont[i]);
  23. if(parit==1){
  24. if((cont[1]%2)==1) /* parita' dispari */
  25. printf("Bit di check 1 corretto");
  26. else{ /* paritΓ  dispari */
  27. printf("Bit di check 1 errato");
  28. /*!*** Function Controllo bit finali ***!*/}
  29. }
  30. else{
  31. if(cont[1] %2 == 0)
  32. printf("Bit di check 1 corretto");
  33. else{
  34. printf("Bit di check 1 errato");
  35. /* !*** Function Controllo bit finali ***!*/}
  36. }
  37. return 0;
  38. }
  39.  
  40.  
  41. //Controllo per bit
  42.  
  43.  
  44. int controllo_hamming(int contatore, char *stringa, int i){
  45. if(stringa[i] == 1)
  46. contatore++;
  47. return contatore;
  48. }
  49.  
  50.  
  51. //Scomposizione per bit 1
  52.  
  53.  
  54. int scomposizione(int contatore, char *stringa, int i){
  55. int j;
  56. int rip=15; //Da automaticizzare
  57. for(j=0;j<rip;j+2)
  58. contatore = controllo_hamming(contatore, stringa, i+2);
  59. return contatore;
  60. }
  61.  
  62.  
  63. //Scomposizione per bit 2
  64.  
  65.  
  66. int scomposizione2(int contatore, char *stringa,int i,int stop){
  67. int j;
  68. int rip=3; //Da automaticizzare
  69. stop=rip; //Da automaticizzare
  70. for(j=0;j<2;j++){
  71. contatore = controllo_hamming(contatore, stringa, i+1);
  72. if(stop != 0)
  73. scomposizione2(contatore, stringa, stop-1,i+3);
  74. }
  75. return contatore;
  76. }
  77.  
  78.  
  79. //Scomposizione per bit 4
  80.  
  81.  
  82. int scomposizione4(int contatore, char *stringa,int i,int stop){
  83. int j;
  84. int rip=3,ripf=3; //Da automaticizzare
  85. stop=rip;
  86. for(j=0;j<3;j++)
  87. contatore = controllo_hamming(contatore, stringa,i+1);
  88. if(stop != 0)
  89. scomposizione4(contatore, stringa, i+5,stop-1);
  90. return contatore;
  91. }
  92.  
  93.  
  94. //Ricorsione per bit 8
  95.  
  96.  
  97. int scomposizione8(int contatore, char *stringa,int i,int stop){
  98. int j;
  99. int rip=3,ripf=7; //Da automaticizzare
  100. stop=rip;
  101. for(j=0;j<ripf;j++)
  102. contatore = controllo_hamming(contatore, stringa, i+1);
  103. if(stop != 0)
  104. scomposizione4(contatore, stringa,i+9,stop-1);
  105. return contatore;
  106. }
  107.  
  108.  
  109. //Controllo bit 16
  110.  
  111.  
  112. int scomposizione16(int contatore, char *stringa, int i){
  113. int j;
  114. int ripf=8; //Da automaticizzare
  115. for(j=0;j<ripf;j+1){
  116. contatore = controllo_hamming(contatore, stringa, i);
  117. i++;}
  118. return contatore;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement