Написать программу «Автоматизированная информационная система ЖД вокзала»
помогите пожалуйста разобраться, написал вот такой код Задание звучит так: Написать программу «Автоматизированная информационная система ЖД вокзала». Система содержит: сведения об отправлении поездов дальнего следования. Для каждого поезда указываем: номер, время отправления, станцию назначения. Обеспечить: ■ Ввод данных в систему; ■ Вывод информации о всех поездах; ■ Вывод информации о запрашиваемом поезде. Использовать контейнерный класс vector
У меня не работает вывод информации о запрашиваемом поезде, никак не могу понять что неправильно сделал... ((
#include <iostream>
#include <string>
#include <vector>
#include <time.h>
#include <iomanip>
using namespace std;
class train
{
protected:
int number;
string departure, destination;
public:
train() :number(0), departure(0), destination(0) {}
train(const train& copy):number(copy.number), departure(copy.departure), destination(copy.destination){}
train(int _number, string _departure, string _destination)
{
number = _number; //номер поезда
departure = _departure; //время отправления
destination = _destination; //место назначения
}
int getNumber()
{
return number;
}
string getDeparture()
{
return departure;
}
string getDestination()
{
return destination;
}
void operator = (train other)
{
number = other.number;
departure = other.departure;
destination = other.destination;
}
};
void addTrain(vector <train> &a) //добавление поезда
{
int num;
string station, time;
cout << "Введите номер поезда: " << endl;
cin >> num;
cin.ignore();
cout << "Введите место назначения: " << endl;
cin >> station;
cin.ignore();
cout << "Введите время отправления: " << endl;
cin >> time;
cin.ignore();
a.push_back(train(num, time, station));
}
void allInfo(vector <train>& a) //вывод информации о всех поездах
{
if (a.empty())
{
cout << "Список пуст! " << endl; return;
}
vector <train>::iterator it = a.begin();
cout << "Номер поезда " << '\t' << " Время отправления " << '\t' << " Место назначения " << endl;
while (it != a.end())
{
cout << it->getNumber() << setw(25) << it->getDeparture() << setw(25) << it->getDestination() << '\n';
it++;
}
}
void info_one_train(vector<train>a)//информация о запрашиваемом поезде
{
int user_train;
vector <train>::iterator it = a.begin();
cout << "Введите номер поезда: " << endl;
cin >> user_train;
cin.ignore();
if (it->getNumber() == user_train)
{
cout << it->getDestination() << '\t' << it->getDeparture() << endl;
}
else
{
cout << "Поезд не найден! " << endl;
}
}
void main()
{
setlocale(LC_ALL, "rus");
cout << setw(55) << "Задание 2 " << endl;
vector <train> database;
for (int i = 0; i < 2; i++)
{
addTrain(database);
}
allInfo(database);
info_one_train(database);
}
Ответы (1 шт):
У вас просто сравнивается запрос с номером только одного - первого - поезда. А проверять следует все.
void info_one_train(const vector<train>& a)//информация о запрашиваемом поезде
{
if (a.empty()) { cout << "Список пуст\n"; return; }
int user_train;
cout << "Введите номер поезда: " << endl;
cin >> user_train;
bool found = false;
for(vector <train>::iterator it = a.begin(); it != a.end(); ++it)
{
if (it->getNumber() == user_train)
{
cout << it->getDestination() << '\t' << it->getDeparture() << endl;
found = true;
break;
}
}
if (!found) cout << "Поезд не найден! " << endl;
}
Можно также воспользоваться find_if с соответствующим компаратором.
И не стесняйтесь передавать большие объекты по ссылке :)