Описать структуру с именем TRAIN (Завершить задачу) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Описать структуру с именем TRAIN, содержащую следующие поля: - название пункта назначения; - номер поезда; - время отправления. Написать программу, выполняющую следующие действия: - ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN; - записи должны быть упорядочены по времени отправления поезда; - вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры; - если таких поездов нет, выдать на дисплей соответствующее сообщение.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 100
  4. struct TRAIN {
  5. char point[30];
  6. int N;
  7. float T;char state[3];
  8. unsigned long int zip;
  9. } TRAIN_list[MAX];
  10. void init_list(void), enter(void);
  11. void delete(void), list(void);
  12. void load(void), save(void);
  13. int menu_select(void), find_free(void);
  14. int main(void)
  15. {
  16. char choice;
  17. init_list(); /* инициализация массива структур */
  18. for(;;) {
  19. choice = menu_select();
  20. switch(choice) {
  21. case 1: enter();
  22. break;
  23. case 2: delete();
  24. break;
  25. case 3: list();
  26. break;
  27. case 4: save();
  28. break;
  29. case 5: load();
  30. break;
  31. case 6: exit(0);
  32. }
  33. }
  34. return 0;
  35. }
  36. /* Инициализация списка. */
  37. void init_list(void)
  38. {
  39. register int t;
  40. for(t=0; t<MAX; ++t) TRAIN_list[t].point[0] = '\0';
  41. }
  42.  
  43. /* Получения значения, выбранного в меню. */
  44. int menu_select(void)
  45. {
  46. char s[80];
  47. int c;
  48. printf("1. Ввести пункт назначения\n");
  49. printf("2. Удалить пункт назначения\n");
  50. printf("3. Вывести список\n");
  51. printf("4. Сохранить файл\n");
  52. printf("5. Загрузить файл\n");
  53. printf("6. Выход\n");
  54. do {
  55. printf("\nВведите номер нужного пункта: ");
  56. gets(s);
  57. c = atoi(s);
  58. } while(c<0 || c>6);
  59. return c;
  60. }
  61.  
  62. /* Добавление адреса в список. */
  63. void enter(void)
  64. {
  65. int slot;
  66. char s[80];
  67. slot = find_free();
  68. if(slot==-1) {
  69. printf("\nСписок заполнен");
  70. return;
  71. }
  72. printf("Введите пункт назначения: ");
  73. gets(TRAIN_list[slot].name);
  74. printf("Введите номер поезда: ");
  75. gets(TRAIN_list[slot].N);
  76. printf("Введите время: ");
  77. gets(TRAIN_list[slot].T);
  78.  
  79. TRAIN_list[slot].zip = strtoul(s, '\0', 10);
  80. }
  81. /* Поиск свободной структуры. */
  82. int find_free(void)
  83. {
  84. register int t;
  85. for(t=0; TRAIN_list[t].name[0] && t<MAX; ++t) ;
  86. if(t==MAX) return -1; /* свободных структур нет */
  87. return t;
  88. }
  89.  
  90. /* Удаление адреса. */
  91. void delete(void)
  92. {
  93. register int slot;
  94. char s[80];
  95. printf("Введите № записи: ");
  96. gets(s);
  97. slot = atoi(s);
  98. if(slot>=0 && slot < MAX)
  99. TRAIN_list[slot].name[0] = '\0';
  100. }
  101. /* Вывод списка на экран. */
  102. void list(void)
  103. {
  104. register int t;
  105. for(t=0; t<MAX; ++t) {
  106. if(TRAIN_list[t].name[0]) {
  107. printf("%s\n", TRAIN_list[t].name);
  108. printf("%s\n", TRAIN_list[t].street);
  109. printf("%s\n", TRAIN_list[t].city);
  110. printf("%s\n", TRAIN_list[t].state);
  111. printf("%lu\n\n", TRAIN_list[t].zip);
  112. }
  113. }
  114. printf("\n\n");
  115. }
  116. /* Сохранение списка. */
  117. void save(void)
  118. {
  119. FILE *fp;
  120. register int i;
  121. if((fp=fopen("maillist", "wb"))==NULL) {
  122. printf("Ошибка при открытии файла.\n");
  123. return;
  124. }
  125. for(i=0; i<MAX; i++)
  126. if(*TRAIN_list[i].name)
  127. if(fwrite(&TRAIN_list[i],
  128. sizeof(struct TRAIN), 1, fp)!=1)
  129. printf("Ошибка при записи файла.\n");
  130. fclose(fp);
  131. }
  132.  
  133. /* Загрузить файл. */
  134. void load(void)
  135. {
  136. FILE *fp;
  137. register int i;
  138. if((fp=fopen("maillist", "rb"))==NULL) {
  139. printf("Ошибка при открытии файла.\n");
  140. return;
  141. }
  142. init_list();
  143. for(i=0; i<MAX; i++)
  144. if(fread(&addr_list[i],
  145. sizeof(struct addr), 1, fp)!=1) {
  146. if(feof(fp)) break;
  147. printf("Ошибка при чтении файла.\n");
  148. }
  149. fclose(fp);
  150. }

Решение задачи: «Описать структуру с именем TRAIN (Завершить задачу)»

textual
Листинг программы
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <string.h>
  4.  
  5. int n = 2;
  6. int m = 0;
  7.  
  8. typedef struct
  9. {
  10.     char pn [21];
  11.     unsigned int num;
  12.     char time [6];
  13. } Train;
  14.  
  15. int main(void)
  16. {
  17.     int kk = 1;
  18.     switch(kk)
  19.     {
  20.     case 1:
  21.         puts ( "добавить поезд "); break;
  22.     case 2:
  23.         puts ( "найти поезд  2. "); break;
  24.     case 3:
  25.         puts ( "выход 3. "); break;
  26.     default:
  27.         puts ( "случай  default. "); break;
  28.     }
  29.  
  30.     printf (" ВНОСИМ ИФНОРМАЦИЮ О ПОЕЗДАХ:\n ");
  31.     Train a[n];
  32.     int i = 0;
  33.     for (i=0; i<n; i++)   //Ввод данных
  34.     {
  35.         printf ("Введите пункт назначения: ");
  36.         scanf("%s", &a[i].pn);
  37.         printf (" Введите номер поезда: ");
  38.         scanf("%d", &a[i].num);
  39.         printf (" Введите время отправления ");
  40.         scanf("%s", &a[i].time);
  41.  
  42.     }
  43.     Train buf;
  44.     int k;
  45.     for (i=0; i < n-1; i++)
  46.         for (k=0; k < n-1; k++)
  47.             if (strcmp (a[k].time, a[k+1].time)>0)
  48.             {
  49.                 buf = a[k];
  50.                 a[k] = a[k+1];
  51.                 a[k+1] = buf;
  52.             }
  53.     char pp[21];
  54.     printf (" ИЩЕМ ПОЕЗД\n ");
  55.     printf ("Введите пункт назначения: ");
  56.     scanf("%s%*c", pp);
  57.     int f = 0;
  58.     for (i=0; i<n; i++)
  59.         if (strcmp (a[i].pn, pp) == 0)
  60.             printf ("Поезд номер: %u\tВремя отправления: %s\n", a[i].num, a[i].time);
  61.             printf("\n");
  62.             f = 1;
  63.  
  64.     if (!f)
  65.         printf ("В %s ПОЕЗДА НЕ ХОДЯТ!",pp);
  66.     getchar();
  67.     return 0;
  68. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Объявляем переменные n и m типа int
  3. Объявляем структуру Train с полями pn, num и time типа char и unsigned int соответственно
  4. В функции main объявляем переменные kk, a, buf, i, k, f и pp
  5. В цикле switch выбираем действие в зависимости от значения переменной kk
  6. Вводим данные о поездах в массив a с помощью цикла for и функций scanf
  7. Сортируем массив a по полю time с помощью двух вложенных циклов for и функции strcmp
  8. Ищем поезд с заданным пунктом назначения с помощью цикла for и функции strcmp
  9. Выводим информацию о найденном поезде на экран
  10. Проверяем значение переменной f и выводим соответствующее сообщение

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут