Advertisement
TsetsoP

den 4

Jul 9th, 2021
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void setBit(int* mask, int n)
  5. {
  6. *mask |= (1 << n);
  7. }
  8.  
  9. void eraseBit(int* mask, int n)
  10. {
  11. *mask &= ~(1 << n);
  12. }
  13.  
  14. int isSet(int mask, int n)
  15. {
  16. return mask & (1 << n);
  17. }
  18.  
  19. int onesCount(int mask)
  20. {
  21. int count = 0;
  22. for (int i = 0; i < sizeof(int) * 8; i++)
  23. {
  24. if (isSet(mask, i))
  25. {
  26. count++;
  27. }
  28. }
  29. return count;
  30. }
  31.  
  32. int zerosCount(int mask)
  33. {
  34. return sizeof(int) * 8 - onesCount(mask);
  35. }
  36.  
  37. void IsHere(int mask)
  38. {
  39. for(int i =0; i < sizeof(int) * 8; i++)
  40. {
  41. if(isSet(mask, i))
  42. {
  43. printf("\nUchenik %d prisustva\n", i);
  44. }
  45. else
  46. {
  47. printf("\nUchenik %d otsustva\n", i);
  48. }
  49. }
  50. }
  51.  
  52. int IsNotHere(int mask, int n)
  53. {
  54. return isSet(mask, n) ? 0 : 1;
  55. }
  56.  
  57. int Validation(int n)
  58. {
  59. return n > 32 || n < 0 ? 0 : 1;
  60. }
  61. int main()
  62. {
  63.  
  64. int prisustviq = 0;
  65. int option;
  66.  
  67. while (1)
  68. {
  69. printf("1. Napishi prisustvie\n");
  70. printf("2. Napishi otsustvie\n");
  71. printf("3. Information\n");
  72. printf("4. Proveri prisustvashti/otsustvashti po nomer\n");
  73. printf("5. Exit\n");
  74.  
  75. printf("Enter option: ");
  76. scanf("%d", &option);
  77.  
  78.  
  79. if (option == 1)
  80. {
  81. int n;
  82. printf("Nomer na uchenika: ");
  83. scanf("%d", &n);
  84.  
  85. if(Validation(n))
  86. {
  87. setBit(&prisustviq, n);
  88. }
  89. else
  90. {
  91. printf("Invalid number\n");
  92. }
  93. }
  94. else if (option == 2)
  95. {
  96. int n;
  97. printf("Nomer na uchenik: ");
  98. scanf("%d", &n);
  99.  
  100. if(Validation(n))
  101. {
  102. eraseBit(&prisustviq, n);
  103. }
  104. else
  105. {
  106. printf("Invalid number\n");
  107. }
  108. }
  109. else if (option == 3)
  110. {
  111. printf("Broi prisustvashti: %d\n", onesCount(prisustviq));
  112. printf("Broi otsustvashti: %d\n", zerosCount(prisustviq));
  113. IsHere(prisustviq);
  114. }
  115. else if (option == 4)
  116. {
  117. int n;
  118. printf("Nomer na uchenika: ");
  119. scanf("%d", &n);
  120.  
  121. if(Validation(n))
  122. {
  123. if(IsNotHere(prisustviq, n))
  124. {
  125. printf("Uchenik %d prisustva\n", n);
  126. }
  127. else
  128. {
  129. printf("Uchenik %d otsustva\n", n);
  130. }
  131. }
  132. else
  133. {
  134. printf("Invalid number\n");
  135. }
  136. }
  137. else if(option == 5)
  138. {
  139. break;
  140. }
  141. else
  142. {
  143. printf("Invalid command \n");
  144. }
  145. }
  146. return 0;
  147. }
  148.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement