Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.90 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define DATA_BOUND 3
  5.  
  6. int F_FRONT = -1;
  7. int F_REAR = -1;
  8. int B_FRONT = -1;
  9. int B_REAR = -1;
  10. unsigned int back_sensor_data[3];
  11. unsigned int front_sensor_data[3];
  12.  
  13. void sensor_data_init()
  14. {
  15.     int i;
  16.     for (i = 0; i < DATA_BOUND; i++)
  17.     {
  18.         back_sensor_data[i] = 0;
  19.         front_sensor_data[i] = 0;
  20.     }
  21. }
  22.  
  23. int is_full(int front, int rear)
  24. {
  25.     if ((front == rear + 1) || (front == 0 && rear == DATA_BOUND - 1))
  26.     {
  27.         return 1;
  28.     }
  29.     return 0;
  30. }
  31.  
  32. int is_empty(int front)
  33. {
  34.     if (front == -1)
  35.     {
  36.         return 1;
  37.     }
  38.     return 0;
  39. }
  40.  
  41. void enqueue_back(unsigned int data)
  42. {
  43.     if (!is_full(B_FRONT, B_REAR))
  44.     {
  45.         if (B_FRONT == -1)
  46.         {
  47.             B_FRONT = 0;
  48.         }
  49.         B_REAR = (B_REAR + 1) % DATA_BOUND;
  50.         back_sensor_data[B_REAR] = data;
  51.     }
  52. }
  53.  
  54. unsigned int dequeue_back()
  55. {
  56.     unsigned int data;
  57.     if (is_empty(B_FRONT))
  58.     {
  59.         return -1;
  60.     }
  61.     else
  62.     {
  63.         data = back_sensor_data[B_FRONT];
  64.         if (B_FRONT == B_REAR)
  65.         {
  66.             B_FRONT = -1;
  67.             B_REAR = -1;
  68.         }
  69.         else
  70.         {
  71.             B_FRONT = (B_FRONT + 1) % DATA_BOUND;
  72.         }
  73.     }
  74.     return (data);
  75. }
  76.  
  77. int main(int argc, char **argv)
  78. {
  79.     enqueue_back(71);
  80.     enqueue_back(57);
  81.     enqueue_back(66);
  82.  
  83.     unsigned int new_val = 74;
  84.  
  85.     unsigned int sum = back_sensor_data[0] + 3 * back_sensor_data[1] + 3 * back_sensor_data[2] + new_val;
  86.     printf("result: %d\n", sum / 8);
  87.  
  88.     printf("removed: %d\n", dequeue_back());
  89.     enqueue_back(new_val);
  90.     enqueue_back(55);
  91.  
  92.     printf("added: %d\n", back_sensor_data[B_REAR]);
  93.     printf("removed: %d\n", dequeue_back());
  94.     printf("removed: %d\n", dequeue_back());
  95.     printf("removed: %d\n", dequeue_back());
  96.     printf("removed: %d\n", dequeue_back());
  97.  
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement