Форум программистов, компьютерный форум CyberForum.ru

Работа с классами и пересечение их между собой (задача о городах и поездах) - C++

Восстановить пароль Регистрация
 
Outmee
 Аватар для Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 56
19.08.2014, 16:02     Работа с классами и пересечение их между собой (задача о городах и поездах) #1
Здравствуйте.
Тут попалась в руки задачка, вкратце суть:
Есть города, в каждом городе есть станция, на станции пассажиры, у пасажира есть цель поездки(N - ый город).
Между городами ездят поезда, в поезде N вагонов, в вагоне N мест.
Написать грубо говоря всю эту систему (без графики), поезд прибыл-погрузился-отбыл, ну и естественно не телепортировался, а где-то там медленно двигается по оперативке к определенному пункту назначения.

Прошу прощения если разжевал все уж слишком, но как кто-то говорил правильно поставленный вопрос - это половина ответа.



city.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <header.h>
#include <station.h>
 
class City
{
public:
    
    char name;
    int cityID;
    Station * station;
    
    City(char Name, int CityID)
    {
       this->name = Name;
       this->cityID = CityID;
    }
};
header.h
C++ (Qt)
1
2
3
4
#include <iostream>
#include <string.h>
 
using namespace std;
passager.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <header.h>
 
 
class Passager
{
public:
    
    short cell; // mesto v vagone
    char target;
    
    Passager(char Target,short Cell)
    {
        this->target = Target;
        this->cell = Cell;
    }
};
station.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <header.h>
#include <passager.h>
class Station
{
public:
    char name;
    Passager * passager;
    
    Station(char Name)
    {
        this->name = Name;
    }
};
до вагонов и поездов дело пока не дошло, как видите.
Не ясно взаимодействие классов между собой, да и внутри например как создать N количество пассажиров.
Прямее сказать: хочется на деле увидеть пару живых примеров
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2014, 16:02     Работа с классами и пересечение их между собой (задача о городах и поездах)
Посмотрите здесь:

C++ Отличия между структурами и классами
Работа с контейнерными классами. Задача связана с авиабилетами C++
C++ Реализация отношений между классами is-a, has-a, uses-a в С++
C++ Организация общения между классами
C++ Отношения между классами и объектами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexandr_1982
Нарушитель
175 / 71 / 17
Регистрация: 04.11.2013
Сообщений: 383
Записей в блоге: 4
19.08.2014, 17:42     Работа с классами и пересечение их между собой (задача о городах и поездах) #2
Город это вершина графа. Дорога между двумя городами это ребро графа. Поиск пути на графе между двумя городами. http://algolist.manual.ru/maths/graphs/
Outmee
 Аватар для Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 56
19.08.2014, 18:02  [ТС]     Работа с классами и пересечение их между собой (задача о городах и поездах) #3
Alexandr_1982, Вы, Меня не поняли, мне не нужно искать кратчайший маршрут, мне просто нужно построить систему,
это задача проверка работы с классами, взаимодействие. Создание 150 пассажиров на каждой станции, их размещение по вагонам и достижение их целей (Городов, вокзалов), ведение статистики. Не больше, не меньше.
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,687
19.08.2014, 18:52     Работа с классами и пересечение их между собой (задача о городах и поездах) #4
Цитата Сообщение от Outmee Посмотреть сообщение
мне просто нужно построить систему
Ну так и нужно сначала спроектировать систему, а потом программу писать. А поезда у вас в реальном времени должны двигаться что ли?
Мне кажется, еще стоит кассы добавить, в которых билеты будут продаваться в реальном времени.
some_name
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,419
19.08.2014, 19:15     Работа с классами и пересечение их между собой (задача о городах и поездах) #5
Цитата Сообщение от Outmee Посмотреть сообщение
Есть города, в каждом городе есть станция, на станции пассажиры, у пасажира есть цель поездки(N - ый город).
Напоминает матрешку. Такие задачи кажуться сложными, но это на первый взгляд. Делайте все по тексту задачи и все.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
19.08.2014, 19:15     Работа с классами и пересечение их между собой (задача о городах и поездах) #6
В общем случае программы, библиотеки и прочие продукты жизнедеятельности разработчиков состоят из данных, логики и интерфейса.
Большую часть словесного описания в первом посте составляет описание данных. Соответственно, и классы, представленные ниже - данные.
"Взаимодействие" классов между собой - это логика. Которой пока нет. Для ее реализации кажется разумным написать другие классы и(или) функции. Но для этого нужно четко описать функционирование разрабатываемой модели.
Поскольку сейчас описания нет, могу только выделить один более-менее сформулированный вопрос:
Цитата Сообщение от Outmee Посмотреть сообщение
как создать N количество пассажиров
Если предполагается, что в начальном состоянии системы на каждой станции есть некоторое количество пассажиров (т.е. мы обрабатываем набор пассажиров, а не обслуживаем поток), то все просто - пишем отдельную функцию, которая обходит все станции и добавляет на них пассажиров. Станция же должна предоставить соответствующие методы для добавления.
Цитата Сообщение от Outmee Посмотреть сообщение
их (пассажиров - прим. меня) размещение по вагонам
Функция, которая принимает на вход станцию и доступный вагон и перемещает пассажиров со станции в вагон. Какая будет связь м/у станцией и составом - смотрите по удобству.
Цитата Сообщение от Outmee Посмотреть сообщение
достижение их целей (Городов, вокзалов), ведение статистики
Мое травмированное сознание видит тут дискретно-событийную имитационную модель.
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,687
19.08.2014, 19:32     Работа с классами и пересечение их между собой (задача о городах и поездах) #7
Цитата Сообщение от 0x10 Посмотреть сообщение
пишем отдельную функцию, которая обходит все станции и добавляет на них пассажиров.
Ну, поскольку программа объектно-ориентированная, то наверно поезд должен иметь функцию-член, загружающую в него стоящих на платформе станции пассажиров.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
19.08.2014, 19:35     Работа с классами и пересечение их между собой (задача о городах и поездах) #8
Цитата Сообщение от Mr.X Посмотреть сообщение
функцию-член, загружающую в него стоящих на платформе станции пассажиров
В контексте этой модели я вижу поезд как контейнер людей. Так что он предоставляет интерфейс добавления и удаления пассажира.
Станция - другой контейнер с аналогичными методами.
Процесс перехода пассажира - отдельная сущность.
Andrej
19.08.2014, 19:41
  #9

Не по теме:

А можно придерусь к конструктору? Таки есть же initializer lists.

C++
1
    City(char Name, int CityID) : name (Name), cityID (CityID) {}
Много лучше.

Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,687
19.08.2014, 19:41     Работа с классами и пересечение их между собой (задача о городах и поездах) #10
Цитата Сообщение от 0x10 Посмотреть сообщение
Процесс перехода пассажира - отдельная сущность.
Ну, в реальной жизни поезд сам с помощью своих проводников загружает пассажиров. Мы же реальную жизнь моделируем.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
19.08.2014, 19:48     Работа с классами и пересечение их между собой (задача о городах и поездах) #11
Цитата Сообщение от Mr.X Посмотреть сообщение
Мы же реальную жизнь моделируем.
Модели всегда реализуются с некоторой точностью до необходимого уровня. Поскольку целей не было обозначено, то я не вижу повода, по которому этот момент можно считать принципиальным.
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, в реальной жизни поезд сам с помощью своих проводников загружает пассажиров.
Хоть и было сказано о персонале, но мне упорно представляется поезд с экскаваторным ковшом.

Добавлено через 1 минуту
И раз уж на то пошло, люди самостоятельно заходят в поезд когда его состояние меняется на разрешающее вход.
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
20.08.2014, 01:29     Работа с классами и пересечение их между собой (задача о городах и поездах) #12
По написанному автору в начале темы. У меня логика такая, Есть линия(вымышленная) по ней движется поезд 10 точек проезда == след остановка(след город). Есть структура, имя пасажира, куда он едет, где он сейчас(город)- если он в пути - название будет "в пути", ну и можно еще чего впихнуть например возраст. делаем массив структур, ну или List, . поезд приезжает проверяет сколько мест свободных, и пропускает людей пока не будет максимум, или они не кончатся, смотрит ли кому выйти надо, и отправляется в вымышленный путь. Приезжаем на след станцию смотрим список пасажиров, кому выйти -выходят. Смотрим колво свободных мест пускаем пока места свободны или люди не кончатся. едем далие.
Весьма просто реализуется - заметно что ведь действия однообразные

Добавлено через 3 минуты
процесс проверки выхода думаю и так ясен. Если пробежались по листу пассажиров, если он "в пути" проверяем куда он едет, если сюда то удаляем его с листа
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,687
20.08.2014, 02:57     Работа с классами и пересечение их между собой (задача о городах и поездах) #13
Цитата Сообщение от Lynatik001 Посмотреть сообщение
По написанному автору в начале темы. У меня логика такая, Есть линия(вымышленная) по ней движется поезд 10 точек проезда == след остановка(след город). Есть структура, имя пасажира, куда он едет, где он сейчас(город)- если он в пути - название будет "в пути", ну и можно еще чего впихнуть например возраст. делаем массив структур, ну или List, . поезд приезжает проверяет сколько мест свободных, и пропускает людей пока не будет максимум, или они не кончатся, смотрит ли кому выйти надо, и отправляется в вымышленный путь. Приезжаем на след станцию смотрим список пасажиров, кому выйти -выходят. Смотрим колво свободных мест пускаем пока места свободны или люди не кончатся. едем далие.
Мне кажется, у каждого поезда должно быть расписание, по которому он должен следовать с некоторыми случайными отклонениями. У каждого пассажира должен быть билет, в котором указаны соответствующие данные (если мы не предусмотрим левых пассажиров, которые за наличку едут). На станции сажать пассажиров по билетам. Каждому месту в вагоне должен соответствовать пассажир с билетом. Можно еще предусмотреть случайные отклонения пассажиров от своего "расписания", например, опоздания сесть на поезд или сойти на своей станции. Также у платформы должен быть список стоящих на ней пассажиров, меняющийся в реальном времени.
Lynatik001
 Аватар для Lynatik001
34 / 28 / 2
Регистрация: 28.09.2012
Сообщений: 560
20.08.2014, 03:36     Работа с классами и пересечение их между собой (задача о городах и поездах) #14
Цитата Сообщение от Mr.X Посмотреть сообщение
Мне кажется, у каждого поезда должно быть расписание, по которому он должен следовать с некоторыми случайными отклонениями. У каждого пассажира должен быть билет, в котором указаны соответствующие данные (если мы не предусмотрим левых пассажиров, которые за наличку едут). На станции сажать пассажиров по билетам. Каждому месту в вагоне должен соответствовать пассажир с билетом. Можно еще предусмотреть случайные отклонения пассажиров от своего "расписания", например, опоздания сесть на поезд или сойти на своей станции. Также у платформы должен быть список стоящих на ней пассажиров, меняющийся в реальном времени
ну написать еще можно много чего, я всево лишь базовую простейшую систему описал по которой дальше б можно было по нужде улучшать. Зачем например продумывать все ето если задача стоит лишь в том что выше описал, а остальное можно легко добавить что надо будет уже ему

Добавлено через 2 минуты
тем болие автор и написал что ему просто надо систему по которой я сделал описание, тоесть еслибы ему билеты и лишняя дребидень надо было он бы отписал). Да да добавлять в такую систему можно много чего
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2014, 05:14     Работа с классами и пересечение их между собой (задача о городах и поездах)
Еще ссылки по теме:

Передача данных между классами C++
C++ Взаимодействие между классами
Связь между 2 классами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Alexandr_1982
Нарушитель
175 / 71 / 17
Регистрация: 04.11.2013
Сообщений: 383
Записей в блоге: 4
20.08.2014, 05:14     Работа с классами и пересечение их между собой (задача о городах и поездах) #15
C++
1
2
3
4
5
6
struct city { struct station* a; };
struct station { struct train * a; struct passenger* a;};
struct passenger { struct city* a; struct passenger* next;};
struct train { struct wagen* a;};
struct wagen { struct place* a; struct wagen* next;};
struct place { struct passenger* a; struct place* next;};
next указатель на следующий элемент односвязного списка
Yandex
Объявления
20.08.2014, 05:14     Работа с классами и пересечение их между собой (задача о городах и поездах)
Ответ Создать тему
Опции темы

Текущее время: 04:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru