Advertisement
Guest User

Untitled

a guest
Nov 26th, 2012
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #define N 7
  3.  
  4. void affichage(char Code[])
  5. {
  6.     int c =0;
  7.     while(c <= N) {
  8.         printf("%c ", Code[c]);
  9.         c++;
  10.     }
  11. }
  12.  
  13. void codeB(int n, char Code[])
  14. {
  15.     int i = 0;
  16.     if(n < 0)
  17.     {
  18.         n = n + 256;   //transformation d'un négatif en un positif
  19.     }
  20.  
  21.     while(i != N+1)
  22.     {
  23.         if(n%2 != 0)
  24.         {
  25.             Code[N-i]='1';
  26.             n = n/2;
  27.         }
  28.         else if(n == 0)
  29.         {
  30.             Code[N-i]='0';
  31.         }
  32.         else
  33.         {
  34.             Code[N-i]='0';
  35.             n = n/2;
  36.         }
  37.         i++;
  38.     }
  39. }
  40.  
  41. int decodeB (char Code[])
  42. {
  43.     int somme = 0, i;
  44.  
  45.     for(i = 0; i <= N; i++)
  46.     {
  47.         if(Code[i] == '1')
  48.         {
  49.             somme = somme + puisDe2(N-i);
  50.         }
  51.     }
  52.     if(Code[0] == '1')
  53.     {
  54.         somme = somme - 256;
  55.     }
  56.  
  57.     return somme;
  58. }
  59.  
  60. void addB(char Code1[], char Code2[], char CodeRes[])
  61. {
  62.     int i = N;
  63.     char ret = '0';
  64.     for(i; i >= 0; i--)
  65.     {
  66.         if(Code1[i] == '0' && Code2[i] == '0' && ret == '0')
  67.         {
  68.             CodeRes[i] = '0';
  69.         }
  70.         else if(Code1[i] == '1' && Code2[i] == '1' && ret == '0')
  71.         {
  72.             CodeRes[i] = '0';
  73.             ret = '1';
  74.         }
  75.         else if(((Code1[i] == '0' && Code2[i] == '1') || (Code1[i] == '1' || Code2[i] == '0')) && ret == '0')
  76.         {
  77.             CodeRes[i] = '1';
  78.         }
  79.         else if(((Code1[i] == '0' && Code2[i] == '1') || (Code1[i] == '1' || Code2[i] == '0')) && ret == '1')
  80.         {
  81.             CodeRes[i] = '0';
  82.             ret = '0';
  83.         }
  84.         else if(((Code1[i] == '1' && Code2[i] == '1') && ret == '1'))
  85.         {
  86.             CodeRes[i] = '1';
  87.             ret = '1';
  88.         }
  89.         CodeRes[0] = '0';
  90.     }
  91. }
  92.  
  93. void multi2(int n, char Code[], char CodeRes[])
  94. {
  95.     int i = 0, j = 0;
  96.     if (Code[0] == '0')
  97.     {
  98.         for(j = 1; j <= n; j++)
  99.         {
  100.             for(i = 0; i < N; i++)
  101.             {
  102.                 CodeRes[i] = Code[i+1];
  103.             }
  104.             CodeRes[N-1] = '0';
  105.             Code = CodeRes;
  106.         }
  107.     }
  108. }
  109.  
  110. int puisDe2(int n)
  111. {
  112.     int i = 0, p = 1;
  113.     for(i = 1; i <= n; i++)
  114.     {
  115.         p = p * 2;
  116.     }
  117.     return p;
  118. }
  119.  
  120. int main()
  121. {
  122.     int num1, num2, n;
  123.     char Code1[N], Code2[N], CodeRes[N];
  124.  
  125.     printf("Entrer un nombre (compris entre -128 et 127) : num 1= ");
  126.         scanf("%d", &num1);
  127.     printf("Entrer un nombre (compris entre -128 et 127) : num 2= ");
  128.         scanf("%d", &num2);
  129.     if( (num1 < -128) || (num1 > 127) || (num2 < -128) || (num2 > 127))  //vérification du nombre
  130.     {
  131.         printf("*** Le nombre a coder ne rentre pas dans l'intervale ***");
  132.     }
  133.  
  134.         //Codage / decodage de num1
  135.     codeB(num1, Code1); //codage
  136.     printf("\nCodage de num1 : ");
  137.     affichage(Code1);
  138.     printf("\nDecodage de num 1 : %d \n", decodeB(Code1)); //décodage
  139.     /*multi2(n, Code1, CodeRes);
  140.     c = 0;
  141.     printf("num1 * 2^%d = ", n); //multiplication
  142.     while(c <= N) {
  143.         printf("%c ", Code1[c]);
  144.         c++;
  145.     }
  146.     printf("\n");*/
  147.  
  148.  
  149.         //Codage / decodage de num2
  150.     codeB(num2, Code2); //codage
  151.     printf("\nCodage de num2 : ");
  152.     affichage(Code2);
  153.     printf("\nDecodage de num 2 : %d \n", decodeB(Code2)); //décodage
  154.     /*multi2(n, Code2, CodeRes);
  155.     c = 0;
  156.     printf("num2 * 2^%d = ", n); //multiplication
  157.     while(c <= N) {
  158.         printf("%c ", Code2[c]);
  159.         c++;
  160.     }
  161.     printf("\n");*/
  162.  
  163.         //somme des 2 termes en binaire
  164.     addB(Code1, Code2, CodeRes);
  165.     printf("\n\nnum1 + num2 = ");
  166.     affichage(CodeRes);
  167.  
  168.     //printf("Par quelle puissance de 2 voulez vous multiplier les nombres ? : ");
  169.         //scanf("%d", &n);
  170.  
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement