Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #define DATA_BOUND 3
- int F_FRONT = -1;
- int F_REAR = -1;
- int B_FRONT = -1;
- int B_REAR = -1;
- unsigned int back_sensor_data[3];
- unsigned int front_sensor_data[3];
- void sensor_data_init()
- {
- int i;
- for (i = 0; i < DATA_BOUND; i++)
- {
- back_sensor_data[i] = 0;
- front_sensor_data[i] = 0;
- }
- }
- int is_full(int front, int rear)
- {
- if ((front == rear + 1) || (front == 0 && rear == DATA_BOUND - 1))
- {
- return 1;
- }
- return 0;
- }
- int is_empty(int front)
- {
- if (front == -1)
- {
- return 1;
- }
- return 0;
- }
- void enqueue_back(unsigned int data)
- {
- if (!is_full(B_FRONT, B_REAR))
- {
- if (B_FRONT == -1)
- {
- B_FRONT = 0;
- }
- B_REAR = (B_REAR + 1) % DATA_BOUND;
- back_sensor_data[B_REAR] = data;
- }
- }
- unsigned int dequeue_back()
- {
- unsigned int data;
- if (is_empty(B_FRONT))
- {
- return -1;
- }
- else
- {
- data = back_sensor_data[B_FRONT];
- if (B_FRONT == B_REAR)
- {
- B_FRONT = -1;
- B_REAR = -1;
- }
- else
- {
- B_FRONT = (B_FRONT + 1) % DATA_BOUND;
- }
- }
- return (data);
- }
- int main(int argc, char **argv)
- {
- enqueue_back(71);
- enqueue_back(57);
- enqueue_back(66);
- unsigned int new_val = 74;
- unsigned int sum = back_sensor_data[0] + 3 * back_sensor_data[1] + 3 * back_sensor_data[2] + new_val;
- printf("result: %d\n", sum / 8);
- printf("removed: %d\n", dequeue_back());
- enqueue_back(new_val);
- enqueue_back(55);
- printf("added: %d\n", back_sensor_data[B_REAR]);
- printf("removed: %d\n", dequeue_back());
- printf("removed: %d\n", dequeue_back());
- printf("removed: %d\n", dequeue_back());
- printf("removed: %d\n", dequeue_back());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement