Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. void Gray(int n)
  4. {
  5. int aux,i,r,j,q,nrbin[100],bin[100],numaringray[100];
  6. aux=n;
  7. i=0;
  8. while(aux>0)
  9. {
  10. r=aux%2;
  11. aux=aux/2;
  12. i++;
  13. bin[i]=r;
  14. }
  15. q=0;
  16. for(j=4;j>=1;j--)
  17. {
  18. if(i<j)
  19. {
  20. q++;
  21. nrbin[q]=0;
  22. }
  23. else
  24. {
  25. q++;
  26. nrbin[q]=bin[j];
  27. i--;
  28. }
  29.  
  30. }
  31. ///Pana aici am facut transformarea cifrei in 8421(BCD)
  32. numaringray[1]=nrbin[1];
  33. for(i=2;i<=4;i++)
  34. {
  35. if(nrbin[i-1]+nrbin[i]==2)
  36. numaringray[i]=0;
  37. else
  38. numaringray[i]=nrbin[i]+nrbin[i-1];
  39. }
  40. for(i=1;i<=4;i++)
  41. cout<<numaringray[i];
  42. ///Ulterior am transformat numarul din BCD in Gray
  43. }
  44. int x,r,aux,uc;
  45. int main()
  46. {
  47. cin>>x;
  48. r=0;
  49. aux=x;
  50. ///Vom calcula rasturnatul numarului pentru a putea lua cifrele la rand de la stanga la dreapta si sa le transformam in gray
  51. while(aux>0)
  52. {
  53. uc=aux%10;
  54. r=r*10+uc;
  55. aux=aux/10;
  56. }
  57. while(r>0)
  58. {
  59. uc=r%10;
  60. Gray(uc);
  61. cout<<" ";
  62. r=r/10;
  63.  
  64. }
  65.  
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement