Написать программу ** с++ 1. Описать структуру с именем TRAIN, содержащую следующие поля:...

0 голосов
185 просмотров

Написать программу на с++
1. Описать структуру с именем TRAIN, содержащую следующие поля:

• название пункта назначения;

• номер поезда;

• время отправления.

2. Написать программу, выполняющую следующие действия:

• ввод с клавиатуры данных в массив, состоящий из восьми элементов типа

TRAIN; записи должны быть упорядочены по номерам поездов;

• вывод на экран информации о поезде, номер которого введен с клавиатуры;

• если таких поездов нет, выдать на дисплей соответствующее сообщение.


Информатика (268 баллов) | 185 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

#include
#include
#include
#include

using namespace std;

struct TRAIN
{
  string name,time;
  int number;
};
void qs(struct TRAIN *arr,int first,int last)
{
   int x=arr[(first+last)/2].number,
   i=first,j=last;
   do{
   while (arr[i].number < x) i++;
   while (arr[j].number > x) j--;
   if (i<=j){    if (arr[i].number>arr[j].number)
    {
     int t=arr[i].number;
     string str = arr[i].name;
     string st = arr[i].time;
     arr[i].number = arr[j].number;
     arr[i].name = arr[j].name;
     arr[i].time = arr[j].time;
     arr[j].number = t;
     arr[j].name = str;
     arr[j].time = st;
     }
      i++;
      j--;  
     }
  }while(i<=j);<br>  if (first  if (last>i) qs(arr,i,last);
 }
void print(struct TRAIN *arr, int n)
{
    cout<<"Пункт назначения\tНомер\tВремя\n";<br>    for(int i(0); i < n; i++)
     cout  << arr[i].name << '\t' << arr[i].number << '\t' << arr[i].time <<'\n';<br>    cout <<endl;<br>}

int main(int argc, char *argv[])
{
     setlocale(0,"");
    const int N=8;
    TRAIN train[N];
    for(int i(0); i < N; i++)
    {
      cout <<"Пункт назначения: ";<br>      getline(cin,train[i].name);
      cout <<"Номер: ";<br>      cin >>train[i].number;
      cin.get();
      cout <<"Время: ";<br>      getline(cin, train[i].time);
      system("cls");
 
  }
    print(train,N);
    qs(train,0,N-1); //Быстрая сортировка
    int n;
    cout <<"Номер поезда: ";<br>    cin>>n;
    bool f=1;
    for(int k=0; k < N; k++)
     if (train[k].number == n)
     { 
      cout << train[k].name << '\t' << train[k].number << '\t' << train[k].time <<'\n';<br>       f=0;
       break;
    } 
   if(f) cout << "Нет такого номера поезда"; <br>    cout <<endl;<br>    print(train,N);
        _getch();
    return 0;

(2.5k баллов)
0

До бесконечности просит вводить пункт, номер и время. или я что то ввожу не так?

0

Требуется ввести данные 8 раз, после заполнение одного элемента экран очищается. Для сокращения времени тестирования можно изменить константу N в меньшую сторону