Помогите в реализации классов

123
22 мая 2019, 06:30

Мне по заданию надо реализовать:

Информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается номер поезда, станция назначения, время отправления. Реализовать программу, которая обеспечивает первоначальный ввод данных в информационную систему, производит вывод всего списка, вводит номер поезда и выводит все данные об этом поезде, вводит название станции назначения и выводит данные обо всех поездах, следующих до этой станции. Обязательно с двумя классами Поезд и расписание. Но у меня возникла проблема при использовании STL библиотек. Во время поиска мне надо иметь доступ к полям поезда, но я не знаю как это реализовать

#include <string>
#include <list>

using namespace std;
class Train {
public:
    int number;
    string arrival_station;
    float time;
//public:
    Train();
    Train(int numb, string arr, float tim);
};
class Timetable : public Train {
private:
    Train train;
    list<Train>* trains;
public:
    Timetable();
    void add(Train);
    int find_number(number);
//int find_station();
};

Реализиции методов(написано криво и не совершенно:( )

#include "pch.h"
#include "Timetable.h"
#include <iostream>

using namespace std;
Train::Train(int numb, string arr, float tim) {
    if (numb < 24.00) {
        number = numb;
        arrival_station = arr;
        time = tim;
    } else cout << "\nВремя введено некорректно";
}
Train::Train() {
}
Timetable::Timetable() {
}
void Timetable::add(Train) {
    trains.push_back(train);
}
int Timetable::find_number(number) {
    list<Train>::const_iterator pos;
    pos = find(trains.begin(), trains.end(), number)
    cout << pos->number;
}
Answer 1

Понимаете, у вас наверчено такое, что разбирать все ошибки - проще написать с нуля... Поэтому я позволю себе формально ограничиться только вашим вопросом -

Во время поиска мне надо иметь доступ к полям поезда, но я не знаю как это реализовать

Вам нужен не find(), а find_if(), и использовать его нужно примерно так:

int Timetable::find_number(int num) {
    list<Train>::const_iterator pos;
    pos = find_if(trains->begin(),trains->end(),[num](const Train&t){ return t.number == num; });
    if (pos == trains->end())
    {
        Не найден
    } else {
        Найден
    }
    return Что вы там хотели вернуть?...
}

У вас нет ни проверки, что что-то найдено, а если найдено - то ваш pos->number по сути равен аргументу функции (зачем искать было? :))

Но это все мелочи по сравнению с общей программой, которая представляет собой нечто странное...

READ ALSO
Проблемы в понимании работы Spring&#39;a

Проблемы в понимании работы Spring'a

недавно смотрел видео по созданию веб-приложения с помощью Spring MVC и Freemarker и пытался понять что и к чемуНа 1:20:00 https://www

148
java.net.SocketException: Connection reset by peer. In custom twitch bot

java.net.SocketException: Connection reset by peer. In custom twitch bot

Я создал кастомного твич бота с использованием библиотеки cavariuxВызвал по очереди методы в main классе

148
Java в чем смысл инструментов для сборки [закрыт]

Java в чем смысл инструментов для сборки [закрыт]

Я как понял, если я хочу скомпилировать код, в котором используются различные сторонние библиотеки, то мне необходимо будет писать кучу доппараметров,...

135
Как удалить слово из файла

Как удалить слово из файла

Программа находит длинное слово в файле, подскажите как его можно удалить?

156