#include <stdio.h> int main() { int incoming, outgoing, bucket_size, num_inputs; int store = 0; // Tracks the current amount of data in the bucket // Take input for bucket size, outgoing rate, and number of inputs printf("Enter bucket size, outgoing rate and number of inputs: "); scanf("%d %d %d", &bucket_size, &outgoing, &num_inputs); // Loop through all incoming packets for (int i = 0; i < num_inputs; i++) { printf("Enter incoming packet size: "); scanf("%d", &incoming); // Display incoming packet size printf("Incoming packet size: %d\n", incoming); // Check if the packet can be stored in the bucket if (incoming <= (bucket_size - store)) { store += incoming; printf("Bucket buffer size: %d out of %d\n", store, bucket_size); } else { // If the bucket is full, drop excess packets printf("Dropped %d packets\n", incoming - (bucket_size - store)); store = bucket_size; printf("Bucket buffer size: %d out of %d\n", store, bucket_size); } // Simulate the outgoing rate store -= outgoing; if (store < 0) store = 0; // Ensure the store doesn't go negative printf("After outgoing, %d packets left in the bucket out of %d\n", store, bucket_size); } return 0; }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter