Your question is Fix Code to Match Intended Output. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
At Zebra Technologies, a warehouse handheld scanner logs how many barcode scans happen during a shift. A firmware engineer wrote the tally routine below in C, and it is producing numbers that don't match what the QA team observes on the device.
#include <stdio.h>
#define NUM_BATCHES 5
int main(void) {
/* index 5 is a leftover test value from bring-up, not a real batch */
int batch_counts[NUM_BATCHES + 1] = {68, 55, 72, 60, 64, 95};
unsigned char total_scans = 0;
int highest_count = 0;
int highest_batch = 0;
int i;
for (i = 0; i <= NUM_BATCHES; i++) {
total_scans += batch_counts[i];
if (batch_counts[i] > highest_count) {
highest_count = batch_counts[i];
highest_batch = i;
}
}
int scans_per_hour = (total_scans / 8) * 60;
printf("Total scans this shift: %d
", total_scans);
printf("Busiest batch: %d with %d scans
", highest_batch, highest_count);
printf("Scan rate: %d per hour
", scans_per_hour);
return 0;
}
Trace this program by hand and give the exact three lines it prints. Then explain how you would change it so it reports the real 5-batch shift correctly.