Предмет: Информатика, автор: tournesoul

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

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

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

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

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

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

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

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

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

Ответы

Автор ответа: PatifonKakao
0
#include <iostream>
#include <string>
#include <conio.h>
#include <cstdlib>

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);
  if (first<j) qs(arr, first,j);
  if (last>i) qs(arr,i,last);
 }
void print(struct TRAIN *arr, int n)
{
    cout<<"Пункт назначенияtНомерtВремяn";
    for(int i(0); i < n; i++)
     cout  << arr[i].name << 't' << arr[i].number << 't' << arr[i].time <<'n';
    cout <<endl;
}

int main(int argc, char *argv[])
{
     setlocale(0,"");
    const int N=8;
    TRAIN train[N];
    for(int i(0); i < N; i++)
    {
      cout <<"Пункт назначения: ";
      getline(cin,train[i].name);
      cout <<"Номер: ";
      cin >>train[i].number;
      cin.get();
      cout <<"Время: ";
      getline(cin, train[i].time);
      system("cls");
 
  }
    print(train,N);
    qs(train,0,N-1); //Быстрая сортировка
    int n;
    cout <<"Номер поезда: ";
    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';
       f=0;
       break;
    } 
   if(f) cout << "Нет такого номера поезда"; 
    cout <<endl;
    print(train,N);
        _getch();
    return 0;
Автор ответа: tournesoul
0
До бесконечности просит вводить пункт, номер и время. или я что то ввожу не так?
Автор ответа: PatifonKakao
0
Требуется ввести данные 8 раз, после заполнение одного элемента экран очищается. Для сокращения времени тестирования можно изменить константу N в меньшую сторону
Похожие вопросы
Предмет: Математика, автор: natsu222