Advertisement
maha_kaal

codice di parità

Nov 24th, 2012
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #define BIT 32
  3.  
  4. void controllaparita(int a);
  5. void stampa (int a[]);
  6. int dispari(int a);
  7.  
  8. int main(){
  9.     unsigned int num;
  10.    
  11.     printf("+==========================================+\n");
  12.     printf("|          CONTROLLO  DI  PARITA'          |\n");
  13.     printf("+==========================================+\n");
  14.  
  15.     while(1){
  16.         printf("Inserire un numero (0 per terminare)");
  17.         scanf("%d", &num);
  18.  
  19.         if(!num)
  20.             break;
  21.         else
  22.             controllaparita(num);
  23.     }
  24.  
  25.     return 0;
  26. }
  27.  
  28. void controllaparita(int a){
  29.     unsigned bin;
  30.     int i, count, mask, array[BIT];
  31.  
  32.     mask = 1;
  33.     mask <<= 31;
  34.     count = 0;
  35.  
  36.     for(i = 0; i < BIT; i++){
  37.         bin = a & mask;
  38.         if(bin){
  39.             count++;
  40.             array[i] = 1;
  41.         } else {
  42.             array[i] = 0;
  43.         }
  44.        
  45.         mask >>= 1;
  46.     }
  47.  
  48.     stampa(array);
  49.  
  50.     if((count % 2) == 0){
  51.         printf("E' di parita' PARI \n");
  52.     } else {
  53.         printf("E' di parita' DISPARI \n");
  54.         int n = dispari(a);
  55.         mask <<= 31;
  56.  
  57.         for(i = 0; i < BIT; i++){
  58.             bin = n & mask;
  59.             if(bin){
  60.                 array[i] = 1;
  61.             } else {
  62.                 array[i] = 0;
  63.             }
  64.             mask >>= 1;
  65.         }
  66.         printf("correto e' %d\n", n);
  67.  
  68.         stampa(array);
  69.     }
  70. }
  71.  
  72. void stampa (int a[]){
  73.     int i = 0;
  74.  
  75.     for(i = 0; i < BIT; i++){
  76.         printf("%d", a[i]);
  77.         if((i+1) % 4 == 0)
  78.             printf(" ");
  79.     }
  80.     printf("\n");
  81. }
  82.  
  83. int dispari(int a){
  84.     int mask = 1;
  85.  
  86.     mask <<= 31;
  87.  
  88.     return a | mask;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement