#include <stdio.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
printf("test");
return 0;
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
printf("%d", numberOfStops);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
struct bus_stop *stops = malloc(numberOfStops * sizeof(struct bus_stop));
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
struct bus_stop *stops = malloc(numberOfStops * sizeof(struct bus_stop));
struct bus *bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
struct bus_stop *stops = malloc(numberOfStops * sizeof(struct bus_stop));
struct bus *bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
int current_time = 1;
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
int current_time = 1;
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
current_time = 1;
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
printf("Current timestep is: %d", current_time);
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
current_time = 1;
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
}
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void RunSimulator() {
PrintSystemState();
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
printf("Add the passenger to the waiting structure\n");
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
printf("Add the passenger to the waiting structure\n");
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
new_passenger = malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = &new_passenger;
tracker->waiting_passengers++;
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (current_stop + 1) % number_of_stops;
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (current_stop + 1) % number_of_stops;
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void RunSimulator() {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->total_time++;
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->total_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->total_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
current_time = 1;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->total_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %d ***\n", current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival == current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void RunSimulator() {
while (tracker->total_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
current_time = current_time + 1;
printf("\n\nCURRENT TIME: %d\n\n", current_time);
tracker->total_time++;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->total_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->total_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival ==tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
printf("\n\nCURRENT TIME: %.0f\n\n", tracker->current_time);
tracker->current_time++;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival ==tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
printf("\n\nCURRENT TIME: %.0f\n\n", tracker->current_time);
tracker->current_time++;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
printf("\n\nCURRENT TIME: %.0f\n\n", tracker->current_time);
tracker->current_time++;
}
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival ==tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
printf("\n\nCURRENT TIME: %.0f\n\n", tracker->current_time);
tracker->current_time++;
}
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
while ((!feof(passengerFile)) && (arrival ==tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
printf("\n\nCURRENT TIME: %.0f\n\n", tracker->current_time);
tracker->current_time++;
}
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
printf("\n\nCURRENT TIME: %.0f\n\n", tracker->current_time);
tracker->current_time++;
}
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = (struct passenger*) &new_passenger;
tracker->waiting_passengers++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
printf("\n\nCURRENT TIME: %.0f\n\n", tracker->current_time);
tracker->current_time++;
}
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) bus->riders = cur->next; prev->next = cur->next;
free(cur);
cur = prev->next;
} else {
prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
printf("\n\nCURRENT TIME: %.0f\n\n", tracker->current_time);
tracker->current_time++;
}
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
}
}
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 0;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (tracker->current_time < 10 ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
printf("\n\nADDED ARRIVING PASSENGER!\n\n");
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
printf("*** TIME STEP = %.0f ***\n", tracker->current_time);
printf("Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
printf("Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
printf("Total sim time: %.0f\n", tracker->current_time);
printf("Total passengers: %.0f\n", tracker->total_passengers);
printf("Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
printf("Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
printf("Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
fprintf(logFile, "*** TIME STEP = %.0f ***\n", tracker->current_time);
fprintf(logFile, "Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
fprintf(logFile, "Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fpos_t prev_pos;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
fprintf(logFile, "Total sim time: %.0f\n", tracker->current_time);
fprintf(logFile, "Total passengers: %.0f\n", tracker->total_passengers);
fprintf(logFile, "Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
fprintf(logFile, "Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
fprintf(logFile, "Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
fprintf(logFile, "*** TIME STEP = %.0f ***\n", tracker->current_time);
fprintf(logFile, "Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
fprintf(logFile, "Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
fprintf(logFile, "Total sim time: %.0f\n", tracker->current_time);
fprintf(logFile, "Total passengers: %.0f\n", tracker->total_passengers);
fprintf(logFile, "Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
fprintf(logFile, "Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
fprintf(logFile, "Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w+");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
fprintf(logFile, "*** TIME STEP = %.0f ***\n", tracker->current_time);
fprintf(logFile, "Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
fprintf(logFile, "Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
fprintf(logFile, "Total sim time: %.0f\n", tracker->current_time);
fprintf(logFile, "Total passengers: %.0f\n", tracker->total_passengers);
fprintf(logFile, "Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
fprintf(logFile, "Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
fprintf(logFile, "Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w+");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
fprintf(logFile, "*** TIME STEP = %.0f ***\n", tracker->current_time);
fprintf(logFile, "Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
fprintf(logFile, "Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &origin, &destination, &arrival);
}
if (!feof(passengerFile)) {
printf("\n\nResetting File Position to: %d\tCurrent Time: %.fl", (int) prev_pos, tracker->current_time);
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
fprintf(logFile, "Total sim time: %.0f\n", tracker->current_time);
fprintf(logFile, "Total passengers: %.0f\n", tracker->total_passengers);
fprintf(logFile, "Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
fprintf(logFile, "Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
fprintf(logFile, "Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w+");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
fprintf(logFile, "*** TIME STEP = %.0f ***\n", tracker->current_time);
fprintf(logFile, "Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
fprintf(logFile, "Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
fprintf(logFile, "Total sim time: %.0f\n", tracker->current_time);
fprintf(logFile, "Total passengers: %.0f\n", tracker->total_passengers);
fprintf(logFile, "Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
fprintf(logFile, "Average passenger time: %.2f\n", tracker->total_journey_length / tracker->total_passengers);
fprintf(logFile, "Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w+");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
fprintf(logFile, "*** TIME STEP = %.0f ***\n", tracker->current_time);
fprintf(logFile, "Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
fprintf(logFile, "Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
if (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
fprintf(logFile, "Total sim time: %.0f\n", tracker->current_time);
fprintf(logFile, "Total passengers: %.0f\n", tracker->total_passengers);
fprintf(logFile, "Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
fprintf(logFile, "Average passenger time: %.2f\n", (tracker->total_journey_length + tracker->total_wait_time) / tracker->total_passengers);
fprintf(logFile, "Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator();
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator() {
passengerFile = fopen("passenger.small.txt", "r");
logFile = fopen("output.txt", "w+");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
fprintf(logFile, "*** TIME STEP = %.0f ***\n", tracker->current_time);
fprintf(logFile, "Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
fprintf(logFile, "Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
while (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
fprintf(logFile, "Total sim time: %.0f\n", tracker->current_time);
fprintf(logFile, "Total passengers: %.0f\n", tracker->total_passengers);
fprintf(logFile, "Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
fprintf(logFile, "Average passenger time: %.2f\n", (tracker->total_journey_length + tracker->total_wait_time) / tracker->total_passengers);
fprintf(logFile, "Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|
#include <stdio.h>
#include <stdlib.h>
#include "simulator.h"
int main (int argc, char const *argv[]) {
InitializeSimulator(argv[1], argv[2]);
RunSimulator();
PrintSummaryInformation();
TearDown();
return 0;
}
void InitializeSimulator(char const *input, char const *output) {
passengerFile = fopen(input, "r");
logFile = fopen(output, "w+");
numberOfStops = GetNumberOfStops(passengerFile);
stops = malloc(numberOfStops * sizeof(struct bus_stop));
bus = malloc(sizeof(struct bus));
bus->current_stop = 0;
bus->number_of_passengers = 0;
bus->riders = NULL;
tracker = malloc(sizeof(struct system_tracker));
int i = 0;
for (i = 0; i < numberOfStops; i++) {
stops[i].num_waiting = 0;
stops[i].waiting = NULL;
}
tracker->current_time = 1;
tracker->total_passengers = 0;
tracker->total_wait_time = 0;
tracker->total_journey_length = 0;
tracker->waiting_passengers = 0;
}
int GetNumberOfStops (FILE *file) {
char number_of_stops[100];
int output;
fgets(number_of_stops, 100, file);
output = atoi(number_of_stops);
return(output);
}
void RunSimulator() {
while (!feof(passengerFile) ||
bus->number_of_passengers > 0 ||
tracker->waiting_passengers > 0
) {
PrintSystemState();
ProcessArrivingPassengers();
UnloadPassengers();
LoadWaitingPassengers(&stops[bus->current_stop]);
bus->current_stop = (bus->current_stop + 1) % numberOfStops;
tracker->current_time++;
}
}
void PrintSystemState() {
fprintf(logFile, "*** TIME STEP = %.0f ***\n", tracker->current_time);
fprintf(logFile, "Bus: Bus Stop %d, passengers %d\n", bus->current_stop, bus->number_of_passengers);
int i = 0;
for (i = 0; i < numberOfStops; i++) {
fprintf(logFile, "Bus Stop %d: waiting %d\n", i, stops[i].num_waiting);
}
}
void ProcessArrivingPassengers() {
int origin = 0;
int destination = 0;
int arrival = 0;
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
while ((!feof(passengerFile)) && (arrival == tracker->current_time)) {;
AddArrivingPassengerToWaiting(origin, destination);
fgetpos(passengerFile, &prev_pos);
fscanf(passengerFile, "%d %d %d", &arrival, &origin, &destination);
}
if (!feof(passengerFile)) {
fsetpos(passengerFile, &prev_pos);
}
}
void AddArrivingPassengerToWaiting(int origin, int destination) {
struct passenger *new_passenger;
new_passenger = (struct passenger*) malloc(sizeof(struct passenger));
new_passenger->origin = origin;
new_passenger->destination = destination;
new_passenger->transit_time = (destination - origin + numberOfStops) % numberOfStops;
new_passenger->wait_time = (origin - bus->current_stop + numberOfStops) % numberOfStops;
new_passenger->next = stops[origin].waiting;
stops[origin].waiting = new_passenger;
tracker->waiting_passengers++;
stops[origin].num_waiting++;
}
void UnloadPassengers() {
struct passenger *cur;
struct passenger *prev;
cur = bus->riders;
prev = bus->riders;
while (cur != NULL) {
if (cur->destination == bus->current_stop) {
tracker->total_journey_length += cur->transit_time;
tracker->total_wait_time += cur->wait_time;
tracker->total_passengers +=1;
if (cur == bus->riders) { bus->riders = cur->next; free(cur);
bus->number_of_passengers--;
cur = bus->riders;
prev = bus->riders;
} else {
prev->next = cur->next;
free(cur);
bus->number_of_passengers--;
cur = prev->next;
}
} else { prev = cur;
cur = cur->next;
}
} }
void LoadWaitingPassengers(struct bus_stop *current_stop) {
struct passenger *temp_ptr;
while (current_stop->waiting != NULL) {
temp_ptr = current_stop->waiting->next;
current_stop->waiting->next = bus->riders;
bus->riders = current_stop->waiting;
current_stop->waiting = temp_ptr;
tracker->waiting_passengers--;
stops[bus->current_stop].num_waiting--;
bus->number_of_passengers++;
}
}
void PrintSummaryInformation() {
fprintf(logFile, "Total sim time: %.0f\n", tracker->current_time);
fprintf(logFile, "Total passengers: %.0f\n", tracker->total_passengers);
fprintf(logFile, "Passenger throughput: %.2f\n", tracker->total_passengers / tracker->current_time);
fprintf(logFile, "Average passenger time: %.2f\n", (tracker->total_journey_length + tracker->total_wait_time) / tracker->total_passengers);
fprintf(logFile, "Average wait time: %.2f\n", tracker->total_wait_time / tracker->total_passengers);
}
void TearDown() {
fclose(passengerFile);
fclose(logFile);
}
|