#include <stdio.h>
#include <string.h>
#define MAX_TRAINS 5
typedef struct {
char destination[50];
int train_number;
int departure_time;
int total_seats;
int sold_seats;
int reserved_seats;
} Train;
void setTrain(Train *train, char destination[], int train_number, int departure_time, int total_seats, int sold_seats, int reserved_seats) {
strcpy(train
->destination
, destination
); train->train_number = train_number;
train->departure_time = departure_time;
train->total_seats = total_seats;
train->sold_seats = sold_seats;
train->reserved_seats = reserved_seats;
}
void getTrain(Train train) {
printf("Destination: %s\n", train.
destination); printf("Train Number: %d\n", train.
train_number); printf("Departure Time: %d\n", train.
departure_time); printf("Total Seats: %d\n", train.
total_seats); printf("Sold Seats: %d\n", train.
sold_seats); printf("Reserved Seats: %d\n", train.
reserved_seats); }
void showTrainsByDestination(Train trains[], int num_trains, char destination[]) {
printf("Trains going to %s:\n", destination
); for (int i = 0; i < num_trains; i++) {
if (strcmp(trains
[i
].
destination, destination
) == 0) { getTrain(trains[i]);
}
}
}
void showTrainsByDestinationAndTime(Train trains[], int num_trains, char destination[], int departure_time) {
printf("Trains going to %s after %d o'clock:\n", destination
, departure_time
); for (int i = 0; i < num_trains; i++) {
if (strcmp(trains
[i
].
destination, destination
) == 0 && trains
[i
].
departure_time > departure_time
) { getTrain(trains[i]);
}
}
}
void showTrainsWithAvailableSeats(Train trains[], int num_trains, char destination[]){
printf("Trains going to %s with available seats:\n", destination
); for (int i = 0; i < num_trains; i++) {
if (strcmp(trains
[i
].
destination, destination
) == 0 && trains
[i
].
total_seats - trains
[i
].
sold_seats - trains
[i
].
reserved_seats > 0) { getTrain(trains[i]);
}
}
}
int main() {
Train trains[MAX_TRAINS];
setTrain(&trains[0], "Moscow", 123, 8, 100, 50, 20);
setTrain(&trains[1], "St. Petersburg", 456, 10, 80, 60, 10);
setTrain(&trains[2], "Moscow", 789, 12, 120, 80, 30);
setTrain(&trains[3], "Novosibirsk", 101112, 14, 150, 100, 20);
setTrain(&trains[4], "Moscow", 131415, 16, 200, 120, 50);
showTrainsByDestination(trains, MAX_TRAINS, "Moscow");
showTrainsByDestinationAndTime(trains, MAX_TRAINS, "St. Petersburg", 10);
showTrainsWithAvailableSeats(trains, MAX_TRAINS, "Moscow");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYX1RSQUlOUyA1Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyIGRlc3RpbmF0aW9uWzUwXTsKICAgIGludCB0cmFpbl9udW1iZXI7CiAgICBpbnQgZGVwYXJ0dXJlX3RpbWU7CiAgICBpbnQgdG90YWxfc2VhdHM7CiAgICBpbnQgc29sZF9zZWF0czsKICAgIGludCByZXNlcnZlZF9zZWF0czsKfSBUcmFpbjsKCnZvaWQgc2V0VHJhaW4oVHJhaW4gKnRyYWluLCBjaGFyIGRlc3RpbmF0aW9uW10sIGludCB0cmFpbl9udW1iZXIsIGludCBkZXBhcnR1cmVfdGltZSwgaW50IHRvdGFsX3NlYXRzLCBpbnQgc29sZF9zZWF0cywgaW50IHJlc2VydmVkX3NlYXRzKSB7CiAgICBzdHJjcHkodHJhaW4tPmRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbik7CiAgICB0cmFpbi0+dHJhaW5fbnVtYmVyID0gdHJhaW5fbnVtYmVyOwogICAgdHJhaW4tPmRlcGFydHVyZV90aW1lID0gZGVwYXJ0dXJlX3RpbWU7CiAgICB0cmFpbi0+dG90YWxfc2VhdHMgPSB0b3RhbF9zZWF0czsKICAgIHRyYWluLT5zb2xkX3NlYXRzID0gc29sZF9zZWF0czsKICAgIHRyYWluLT5yZXNlcnZlZF9zZWF0cyA9IHJlc2VydmVkX3NlYXRzOwp9Cgp2b2lkIGdldFRyYWluKFRyYWluIHRyYWluKSB7CiAgICBwcmludGYoIkRlc3RpbmF0aW9uOiAlc1xuIiwgdHJhaW4uZGVzdGluYXRpb24pOwogICAgcHJpbnRmKCJUcmFpbiBOdW1iZXI6ICVkXG4iLCB0cmFpbi50cmFpbl9udW1iZXIpOwogICAgcHJpbnRmKCJEZXBhcnR1cmUgVGltZTogJWRcbiIsIHRyYWluLmRlcGFydHVyZV90aW1lKTsKICAgIHByaW50ZigiVG90YWwgU2VhdHM6ICVkXG4iLCB0cmFpbi50b3RhbF9zZWF0cyk7CiAgICBwcmludGYoIlNvbGQgU2VhdHM6ICVkXG4iLCB0cmFpbi5zb2xkX3NlYXRzKTsKICAgIHByaW50ZigiUmVzZXJ2ZWQgU2VhdHM6ICVkXG4iLCB0cmFpbi5yZXNlcnZlZF9zZWF0cyk7CiAgICBwcmludGYoIlxuIik7Cn0KCnZvaWQgc2hvd1RyYWluc0J5RGVzdGluYXRpb24oVHJhaW4gdHJhaW5zW10sIGludCBudW1fdHJhaW5zLCBjaGFyIGRlc3RpbmF0aW9uW10pIHsKICAgIHByaW50ZigiVHJhaW5zIGdvaW5nIHRvICVzOlxuIiwgZGVzdGluYXRpb24pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fdHJhaW5zOyBpKyspIHsKICAgICAgICBpZiAoc3RyY21wKHRyYWluc1tpXS5kZXN0aW5hdGlvbiwgZGVzdGluYXRpb24pID09IDApIHsKICAgICAgICAgICAgZ2V0VHJhaW4odHJhaW5zW2ldKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgc2hvd1RyYWluc0J5RGVzdGluYXRpb25BbmRUaW1lKFRyYWluIHRyYWluc1tdLCBpbnQgbnVtX3RyYWlucywgY2hhciBkZXN0aW5hdGlvbltdLCBpbnQgZGVwYXJ0dXJlX3RpbWUpIHsKICAgIHByaW50ZigiVHJhaW5zIGdvaW5nIHRvICVzIGFmdGVyICVkIG8nY2xvY2s6XG4iLCBkZXN0aW5hdGlvbiwgZGVwYXJ0dXJlX3RpbWUpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fdHJhaW5zOyBpKyspIHsKICAgICAgICBpZiAoc3RyY21wKHRyYWluc1tpXS5kZXN0aW5hdGlvbiwgZGVzdGluYXRpb24pID09IDAgJiYgdHJhaW5zW2ldLmRlcGFydHVyZV90aW1lID4gZGVwYXJ0dXJlX3RpbWUpIHsKICAgICAgICAgICAgZ2V0VHJhaW4odHJhaW5zW2ldKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgc2hvd1RyYWluc1dpdGhBdmFpbGFibGVTZWF0cyhUcmFpbiB0cmFpbnNbXSwgaW50IG51bV90cmFpbnMsIGNoYXIgZGVzdGluYXRpb25bXSl7CiAgICBwcmludGYoIlRyYWlucyBnb2luZyB0byAlcyB3aXRoIGF2YWlsYWJsZSBzZWF0czpcbiIsIGRlc3RpbmF0aW9uKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3RyYWluczsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcCh0cmFpbnNbaV0uZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uKSA9PSAwICYmIHRyYWluc1tpXS50b3RhbF9zZWF0cyAtIHRyYWluc1tpXS5zb2xkX3NlYXRzIC0gdHJhaW5zW2ldLnJlc2VydmVkX3NlYXRzID4gMCkgewogICAgICAgICAgICBnZXRUcmFpbih0cmFpbnNbaV0pOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBUcmFpbiB0cmFpbnNbTUFYX1RSQUlOU107CgogICAgc2V0VHJhaW4oJnRyYWluc1swXSwgIk1vc2NvdyIsIDEyMywgOCwgMTAwLCA1MCwgMjApOwogICAgc2V0VHJhaW4oJnRyYWluc1sxXSwgIlN0LiBQZXRlcnNidXJnIiwgNDU2LCAxMCwgODAsIDYwLCAxMCk7CiAgICBzZXRUcmFpbigmdHJhaW5zWzJdLCAiTW9zY293IiwgNzg5LCAxMiwgMTIwLCA4MCwgMzApOwogICAgc2V0VHJhaW4oJnRyYWluc1szXSwgIk5vdm9zaWJpcnNrIiwgMTAxMTEyLCAxNCwgMTUwLCAxMDAsIDIwKTsKICAgIHNldFRyYWluKCZ0cmFpbnNbNF0sICJNb3Njb3ciLCAxMzE0MTUsIDE2LCAyMDAsIDEyMCwgNTApOwoKICAgIHNob3dUcmFpbnNCeURlc3RpbmF0aW9uKHRyYWlucywgTUFYX1RSQUlOUywgIk1vc2NvdyIpOwogICAgc2hvd1RyYWluc0J5RGVzdGluYXRpb25BbmRUaW1lKHRyYWlucywgTUFYX1RSQUlOUywgIlN0LiBQZXRlcnNidXJnIiwgMTApOwogICAgc2hvd1RyYWluc1dpdGhBdmFpbGFibGVTZWF0cyh0cmFpbnMsIE1BWF9UUkFJTlMsICJNb3Njb3ciKTsKCiAgICByZXR1cm4gMDsKfQ==