Вопрос Не могу написать программу, помогите пожалуйста

Регистрация
4 Окт 2013
Сообщения
97
Репутация
0
Спасибо
0
Монет
0
C++
Описать структуру с именем TRAIN, содержащую следующие поля:
•Название пункта назначения;
•Номер поезда;
•Время отправления.
Написать программу, выполняющую следующие действия:
•Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
•Вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени;
•Если таких поездов нет, выдать на дисплей соответствующее сообщение.
 
#include #include #include typedef struct { char pn [21]; unsigned int num; char time [6]; } Train; Train* vvod(Train *a, int *n) { printf (" ВНОСИМ ИФНОРМАЦИЮ О ПОЕЗДАХ: "); int i, k; Train buf; Train *tmp; if (*n == 0) { a = (Train*) malloc (sizeof(Train)); tmp = (Train*) malloc (sizeof(Train)); } else { tmp = (Train*) malloc (*n*sizeof(Train)); memcpy(tmp, a, *n); a = (Train*) malloc ((*n+1)*sizeof(Train)); } printf ("Введите пункт назначения: "); scanf("%s", &buf.pn); printf (" Введите номер поезда: "); scanf("%d", &buf.num); printf (" Введите время отправления "); scanf("%s%*c", &buf.time); *n += 1; memcpy(a, tmp, *n); a[*n-1] = buf; for (i=0; i < *n-1; i++) for (k=0; k < *n-1; k++) if (strcmp (a[k].time, a[k+1].time)>0) { buf = a[k]; a[k] = a[k+1]; a[k+1] = buf; } free(tmp); tmp = NULL; return a; } int menu_choice() { char s[10]; int c; printf("1. Добавить поезд "); printf("2. Найти поезд "); printf("0. Выход "); do { printf("Ваш выбор: "); fgets(s, 10,stdin); c = atoi(s); } while (c < 0 || c > 2); return c; } void search(Train *a, const int n) { int i; char pp[21]; printf (" ИЩЕМ ПОЕЗД "); printf ("Введите пункт назначения: "); scanf("%s%*c", pp); int f = 0; for (i=0; i < n; i++) if (strcmp (a.pn, pp) == 0) { printf ("Поезд номер: %u Время отправления: %s ", a.num, a.time); printf(" "); f = 1; } if (!f) printf (" В %s ПОЕЗДА НЕ ХОДЯТ! ",pp); } int main(void) { Train *a; int count_train = 0; for (;;){ switch(menu_choice()) { case 1: a = vvod(a, &count_train); break; case 2: search(a, count_train); break; case 0: free(a); a = NULL; exit(0); break; } } }
 
Назад
Сверху