w3resource

C Exercises: Compute the average value of the elements in a queue


8. Queue Average Value

Write a C program to compute the average value of the elements in a queue.

Sample Solution:

C Code:

#include <stdio.h>
#define MAX_SIZE 100

int queue[MAX_SIZE]; // Array to store elements of the queue
int front = -1, back = -1; // Initialize front and back pointers

// Function to insert an element into the queue
void enqueue(int item) {
    if (back == MAX_SIZE - 1) { // Check if the queue is full
        printf("Error: Queue is full\n"); // Print error message if the queue is full
        return;
    }
    if (front == -1) { // Check if the queue is empty
        front = 0; // If empty, set front to 0
    }
    back++; // Increment the back pointer
    queue[back] = item; // Add the item to the queue
}

// Function to remove an element from a queue
int dequeue() {
    if (front == -1 || front > back) { // Check if the queue is empty
        printf("Error: Queue is empty\n"); // Print error message if the queue is empty
        return -1; // Return -1 to indicate an empty queue
    }
    int item = queue[front]; // Get the front element of the queue
    front++; // Move the front pointer to the next element
    return item; // Return the removed element
}

// Function to compute the average of elements in a queue
float average() {
    if (front == -1 || front > back) { // Check if the queue is empty
        printf("Error: Queue is empty\n"); // Print error message if the queue is empty
        return -1.0; // Return -1.0 to indicate an empty queue
    }
    float sum = 0; // Initialize sum variable to calculate the sum of elements
    int count = 0; // Initialize count variable to count the number of elements
    // Loop through the elements of the queue and calculate the sum
    for (int i = front; i <= back; i++) {
        sum += queue[i]; // Add the current element to the sum
        count++; // Increment the count of elements
    }
    float result = sum / count; // Calculate the average
    return result; // Return the average
}

// Function to display the elements in the queue
void display() {
    printf("Queue elements are: "); // Print message to indicate queue elements
    for (int i = front; i <= back; i++) { // Loop through the elements of the queue
        printf("%d ", queue[i]); // Print the current element
    }
    printf("\n"); // Print a newline after displaying all elements
}

// Main function to test the program
int main() {
    // Insert some elements into the queue.
    enqueue(1);
    enqueue(2);
    enqueue(3);
    enqueue(4);
    enqueue(5);
    // Display the elements in the queue.
    display();
    // Find the average of the elements in the queue.
    float avg = average();
    printf("Average of the elements in the queue is: %f\n", avg);
    printf("\nRemove 2 elements from the said queue:\n");
    dequeue();
    dequeue();
    // Display the elements in the queue.
    display();
    // Recalculate the average of the elements in the queue.
    avg = average();
    printf("Average of the elements in the queue is: %f\n", avg);
    printf("\nInsert 3 more elements:\n");
    enqueue(300);
    enqueue(427);
    enqueue(519);
    // Display the elements in the queue.
    display();
    // Recalculate the average of the elements in the queue.
    avg = average();
    printf("Average of the elements in the queue is: %f\n", avg);
    return 0; // Return 0 to indicate successful execution
}

Output:

Queue elements are: 1 2 3 4 5 
Average of the elements in the queue is: 3.000000

Remove 2 elements from the said queue:
Queue elements are: 3 4 5 
Average of the elements in the queue is: 4.000000

Insert 3 more elements:
Queue elements are: 3 4 5 300 427 519 
Average of the elements in the queue is: 209.666672

Flowchart

Flowchart: Compute the average value of the elements in a queue.


Flowchart: Compute the average value of the elements in a queue.


Flowchart: Compute the average value of the elements in a queue.


For more Practice: Solve these Related Problems:

  • Write a C program to implement a queue that calculates the average value in constant time using auxiliary variables.
  • Write a C program to compute the average only for even numbers in an array-based queue.
  • Write a C program to implement a sliding window average on a queue as elements are enqueued and dequeued.
  • Write a C program to implement a linked list queue that computes the average and rounds it to the nearest integer.

Go to:


PREV : Queue Sum of Elements.
NEXT : Queue Maximum Element.

C Programming Code Editor:



Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.