// stats.cc: the Statistics class. #include #include #include "main.h" #include "car.h" #include "carqueue.h" #include "pump.h" #include "pstand.h" #include "stats.h" void Statistics::accumBalk (double litres) { balkingCustomers += 1; totalLitresMissed += litres; } void Statistics::accumSale (double litres) { customersServed += 1; totalLitresSold += litres; } void Statistics::accumServiceTime (double interval) { totalServiceTime += interval; } void Statistics::accumWaitingTime (double interval) { totalWaitingTime += interval; } void Statistics::countArrival () { totalArrivals += 1; } // printHeaders: print column titles for the statistics summaries. void Statistics::printHeaders () { cout << " Current Total NoQueue Car->Car Average Number Average Pump Total Lost\n"; cout << " Time Cars Fraction Time Litres Balked Wait Usage Profit Profit\n"; for (int i = 0; i < 79; i++) cout << "-"; cout << "\n"; } void Statistics::snapshot () { printf ("%8.0f", sim->simulationTime); printf ("%7d", totalArrivals); printf ("%8.3f", sim->carQueue->getEmptyTime()/sim->simulationTime); if (totalArrivals > 0) { printf ("%9.3f", sim->simulationTime/totalArrivals); printf ("%8.3f", (totalLitresSold + totalLitresMissed) / totalArrivals); } else printf (" Unknown Unknown"); printf ("%7d", balkingCustomers); if (customersServed > 0) printf ("%9.3f", totalWaitingTime/customersServed); else printf (" Unknown"); printf ("%7.3f", totalServiceTime / (sim->pumpStand->getNumberOfPumps() * sim->simulationTime)); printf ("%9.2f", totalLitresSold * sim->profit - sim->pumpCost * sim->pumpStand->getNumberOfPumps()); printf ("%7.2f", totalLitresMissed * sim->profit); cout << "\n"; }