fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX_TRAINS 5
  5.  
  6. typedef struct {
  7. char destination[50];
  8. int train_number;
  9. int departure_time;
  10. int total_seats;
  11. int sold_seats;
  12. int reserved_seats;
  13. } Train;
  14.  
  15. void setTrain(Train *train, char destination[], int train_number, int departure_time, int total_seats, int sold_seats, int reserved_seats) {
  16. strcpy(train->destination, destination);
  17. train->train_number = train_number;
  18. train->departure_time = departure_time;
  19. train->total_seats = total_seats;
  20. train->sold_seats = sold_seats;
  21. train->reserved_seats = reserved_seats;
  22. }
  23.  
  24. void getTrain(Train train) {
  25. printf("Destination: %s\n", train.destination);
  26. printf("Train Number: %d\n", train.train_number);
  27. printf("Departure Time: %d\n", train.departure_time);
  28. printf("Total Seats: %d\n", train.total_seats);
  29. printf("Sold Seats: %d\n", train.sold_seats);
  30. printf("Reserved Seats: %d\n", train.reserved_seats);
  31. printf("\n");
  32. }
  33.  
  34. void showTrainsByDestination(Train trains[], int num_trains, char destination[]) {
  35. printf("Trains going to %s:\n", destination);
  36. for (int i = 0; i < num_trains; i++) {
  37. if (strcmp(trains[i].destination, destination) == 0) {
  38. getTrain(trains[i]);
  39. }
  40. }
  41. }
  42.  
  43. void showTrainsByDestinationAndTime(Train trains[], int num_trains, char destination[], int departure_time) {
  44. printf("Trains going to %s after %d o'clock:\n", destination, departure_time);
  45. for (int i = 0; i < num_trains; i++) {
  46. if (strcmp(trains[i].destination, destination) == 0 && trains[i].departure_time > departure_time) {
  47. getTrain(trains[i]);
  48. }
  49. }
  50. }
  51.  
  52. void showTrainsWithAvailableSeats(Train trains[], int num_trains, char destination[]){
  53. printf("Trains going to %s with available seats:\n", destination);
  54. for (int i = 0; i < num_trains; i++) {
  55. if (strcmp(trains[i].destination, destination) == 0 && trains[i].total_seats - trains[i].sold_seats - trains[i].reserved_seats > 0) {
  56. getTrain(trains[i]);
  57. }
  58. }
  59. }
  60.  
  61. int main() {
  62. Train trains[MAX_TRAINS];
  63.  
  64. setTrain(&trains[0], "Moscow", 123, 8, 100, 50, 20); //прибытие, номер, время отбытия, всего мест, проданных, оставшихся
  65. setTrain(&trains[1], "St. Petersburg", 456, 10, 80, 60, 10);
  66. setTrain(&trains[2], "Moscow", 789, 12, 120, 80, 30);
  67. setTrain(&trains[3], "Novosibirsk", 101112, 14, 150, 100, 0);
  68. setTrain(&trains[4], "Moscow", 131415, 16, 200, 120, 50);
  69.  
  70. showTrainsByDestination(trains, MAX_TRAINS, "Moscow");
  71. showTrainsByDestinationAndTime(trains, MAX_TRAINS, "Novosibirsk", 15);
  72. showTrainsWithAvailableSeats(trains, MAX_TRAINS, "Novosibirsk");
  73.  
  74. return 0;
  75. }
Success #stdin #stdout 0.01s 5180KB
stdin
Standard input is empty
stdout
Trains going to Moscow:
Destination: Moscow
Train Number: 123
Departure Time: 8
Total Seats: 100
Sold Seats: 50
Reserved Seats: 20

Destination: Moscow
Train Number: 789
Departure Time: 12
Total Seats: 120
Sold Seats: 80
Reserved Seats: 30

Destination: Moscow
Train Number: 131415
Departure Time: 16
Total Seats: 200
Sold Seats: 120
Reserved Seats: 50

Trains going to Novosibirsk after 15 o'clock:
Trains going to Novosibirsk with available seats:
Destination: Novosibirsk
Train Number: 101112
Departure Time: 14
Total Seats: 150
Sold Seats: 100
Reserved Seats: 0