Denis_Hristov

HomeWork C Day4

Jul 9th, 2021 (edited)
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void setBit(int* mask, int n){
  5.     *mask |= (1 << n);
  6. }
  7.  
  8. void eraseBit(int* mask, int n){
  9.     *mask &= ~(1 << n);
  10. }
  11.  
  12. int isSet(int mask, int n){
  13.     return mask & (1 << n);
  14. }
  15.  
  16. int onesCount(int mask){
  17.     int count = 0;
  18.     for (int i = 0; i < sizeof(int) * 8; i++){
  19.         if (isSet(mask, i)){
  20.             count++;
  21.         }
  22.     }
  23.     return count;
  24. }
  25.  
  26. int zerosCount(int mask){
  27.     return sizeof(int) * 8 - onesCount(mask);
  28. }
  29.  
  30. void IsHere(int mask){
  31.     for(int i =0; i < sizeof(int) * 8; i++){
  32.         if(isSet(mask, i)){
  33.             printf("\nStudent %d attends\n", i);
  34.         }else{
  35.             printf("\nStudent %d is absent\n", i);
  36.         }
  37.     }
  38. }
  39.  
  40. int IsNotHere(int mask, int n){
  41.     return isSet(mask, n) ? 0 : 1;
  42. }
  43.  
  44. int Validation(int n){
  45.     return n > 32 || n < 0 ? 0 : 1;
  46. }
  47.  
  48. int main(){
  49.  
  50.     int prisustviq = 0;
  51.     int option;
  52.  
  53.     while (1){
  54.         printf("1. Write a presence\n");
  55.         printf("2. Write an absence\n");
  56.         printf("3. Information\n");
  57.         printf("4. Check presence/absence by number (reversed)\n");
  58.         printf("5. Exit\n");
  59.  
  60.         printf("Enter option: ");
  61.         scanf("%d", &option);
  62.  
  63.  
  64.         if (option == 1){
  65.             int n;
  66.             printf("Student number: ");
  67.             scanf("%d", &n);
  68.  
  69.             if(Validation(n)){
  70.                 setBit(&prisustviq, n);
  71.             }else{
  72.                printf("Invalid number\n");
  73.             }
  74.         }else if (option == 2){
  75.             int n;
  76.             printf("Student number: ");
  77.             scanf("%d", &n);
  78.  
  79.             if(Validation(n)){
  80.                 eraseBit(&prisustviq, n);
  81.             }else{
  82.                printf("Invalid number\n");
  83.             }
  84.         }else if (option == 3){
  85.             printf("Number of attendees: %d\n", onesCount(prisustviq));
  86.             printf("Number of absentees: %d\n", zerosCount(prisustviq));
  87.             IsHere(prisustviq);
  88.         }else if (option == 4){
  89.             int n;
  90.             printf("Student number: ");
  91.             scanf("%d", &n);
  92.  
  93.             if(Validation(n)){
  94.                if(IsNotHere(prisustviq, n)){
  95.                     printf("Student %d attends\n", n);
  96.                 }else{
  97.                     printf("Student %d is absent\n", n);
  98.                 }
  99.             }else{
  100.                 printf("Invalid number\n");
  101.             }
  102.        }else if(option == 5){
  103.             break;
  104.        }else{
  105.             printf("Invalid command \n");
  106.         }
  107.     }
  108.     return 0;
  109. }
  110.  
Add Comment
Please, Sign In to add comment