2 / 2 / 1
Регистрация: 26.01.2014
Сообщений: 59
1

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

19.08.2014, 16:02. Показов 1339. Ответов 14
Метки нет (Все метки)

Здравствуйте.
Тут попалась в руки задачка, вкратце суть:
Есть города, в каждом городе есть станция, на станции пассажиры, у пасажира есть цель поездки(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 количество пассажиров.
Прямее сказать: хочется на деле увидеть пару живых примеров
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2014, 16:02
Ответы с готовыми решениями:

Задача Сравнения между собой
Всем привет нужен код для этого фаила ЗАДАЧА НАХОДИТСЯ НА 2 ЛИСТЕ на фотке изображено примерный...

Работа между классами
Есть главный класс main.java, есть класс pampam.java, созданный отдельно путем &quot;new&quot;-&gt;&quot;Java...

Переставить между собой элементы массива между собой, кроме максимального
Переставить между собой элементы массива между собой, кроме максимального, программа в СИ

Работа со значением переменной между классами
Всем желаю здравствовать! Помогите мне пожалуйста ответом на такой скорее всего глупый вопрос....

14
191 / 90 / 33
Регистрация: 04.11.2013
Сообщений: 474
Записей в блоге: 4
19.08.2014, 17:42 2
Город это вершина графа. Дорога между двумя городами это ребро графа. Поиск пути на графе между двумя городами. http://algolist.manual.ru/maths/graphs/
0
2 / 2 / 1
Регистрация: 26.01.2014
Сообщений: 59
19.08.2014, 18:02  [ТС] 3
Alexandr_1982, Вы, Меня не поняли, мне не нужно искать кратчайший маршрут, мне просто нужно построить систему,
это задача проверка работы с классами, взаимодействие. Создание 150 пассажиров на каждой станции, их размещение по вагонам и достижение их целей (Городов, вокзалов), ведение статистики. Не больше, не меньше.
0
Эксперт С++
3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
19.08.2014, 18:52 4
Цитата Сообщение от Outmee Посмотреть сообщение
мне просто нужно построить систему
Ну так и нужно сначала спроектировать систему, а потом программу писать. А поезда у вас в реальном времени должны двигаться что ли?
Мне кажется, еще стоит кассы добавить, в которых билеты будут продаваться в реальном времени.
1
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
19.08.2014, 19:15 5
Цитата Сообщение от Outmee Посмотреть сообщение
Есть города, в каждом городе есть станция, на станции пассажиры, у пасажира есть цель поездки(N - ый город).
Напоминает матрешку. Такие задачи кажуться сложными, но это на первый взгляд. Делайте все по тексту задачи и все.
1
3254 / 2056 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
19.08.2014, 19:15 6
В общем случае программы, библиотеки и прочие продукты жизнедеятельности разработчиков состоят из данных, логики и интерфейса.
Большую часть словесного описания в первом посте составляет описание данных. Соответственно, и классы, представленные ниже - данные.
"Взаимодействие" классов между собой - это логика. Которой пока нет. Для ее реализации кажется разумным написать другие классы и(или) функции. Но для этого нужно четко описать функционирование разрабатываемой модели.
Поскольку сейчас описания нет, могу только выделить один более-менее сформулированный вопрос:
Цитата Сообщение от Outmee Посмотреть сообщение
как создать N количество пассажиров
Если предполагается, что в начальном состоянии системы на каждой станции есть некоторое количество пассажиров (т.е. мы обрабатываем набор пассажиров, а не обслуживаем поток), то все просто - пишем отдельную функцию, которая обходит все станции и добавляет на них пассажиров. Станция же должна предоставить соответствующие методы для добавления.
Цитата Сообщение от Outmee Посмотреть сообщение
их (пассажиров - прим. меня) размещение по вагонам
Функция, которая принимает на вход станцию и доступный вагон и перемещает пассажиров со станции в вагон. Какая будет связь м/у станцией и составом - смотрите по удобству.
Цитата Сообщение от Outmee Посмотреть сообщение
достижение их целей (Городов, вокзалов), ведение статистики
Мое травмированное сознание видит тут дискретно-событийную имитационную модель.
0
Эксперт С++
3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
19.08.2014, 19:32 7
Цитата Сообщение от 0x10 Посмотреть сообщение
пишем отдельную функцию, которая обходит все станции и добавляет на них пассажиров.
Ну, поскольку программа объектно-ориентированная, то наверно поезд должен иметь функцию-член, загружающую в него стоящих на платформе станции пассажиров.
0
3254 / 2056 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
19.08.2014, 19:35 8
Цитата Сообщение от Mr.X Посмотреть сообщение
функцию-член, загружающую в него стоящих на платформе станции пассажиров
В контексте этой модели я вижу поезд как контейнер людей. Так что он предоставляет интерфейс добавления и удаления пассажира.
Станция - другой контейнер с аналогичными методами.
Процесс перехода пассажира - отдельная сущность.
0
Andrej
19.08.2014, 19:41
  #9

Не по теме:

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

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

0
Эксперт С++
3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
19.08.2014, 19:41 10
Цитата Сообщение от 0x10 Посмотреть сообщение
Процесс перехода пассажира - отдельная сущность.
Ну, в реальной жизни поезд сам с помощью своих проводников загружает пассажиров. Мы же реальную жизнь моделируем.
0
3254 / 2056 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
19.08.2014, 19:48 11
Цитата Сообщение от Mr.X Посмотреть сообщение
Мы же реальную жизнь моделируем.
Модели всегда реализуются с некоторой точностью до необходимого уровня. Поскольку целей не было обозначено, то я не вижу повода, по которому этот момент можно считать принципиальным.
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, в реальной жизни поезд сам с помощью своих проводников загружает пассажиров.
Хоть и было сказано о персонале, но мне упорно представляется поезд с экскаваторным ковшом.

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

Добавлено через 3 минуты
процесс проверки выхода думаю и так ясен. Если пробежались по листу пассажиров, если он "в пути" проверяем куда он едет, если сюда то удаляем его с листа
0
Эксперт С++
3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
20.08.2014, 02:57 13
Цитата Сообщение от Lynatik001 Посмотреть сообщение
По написанному автору в начале темы. У меня логика такая, Есть линия(вымышленная) по ней движется поезд 10 точек проезда == след остановка(след город). Есть структура, имя пасажира, куда он едет, где он сейчас(город)- если он в пути - название будет "в пути", ну и можно еще чего впихнуть например возраст. делаем массив структур, ну или List, . поезд приезжает проверяет сколько мест свободных, и пропускает людей пока не будет максимум, или они не кончатся, смотрит ли кому выйти надо, и отправляется в вымышленный путь. Приезжаем на след станцию смотрим список пасажиров, кому выйти -выходят. Смотрим колво свободных мест пускаем пока места свободны или люди не кончатся. едем далие.
Мне кажется, у каждого поезда должно быть расписание, по которому он должен следовать с некоторыми случайными отклонениями. У каждого пассажира должен быть билет, в котором указаны соответствующие данные (если мы не предусмотрим левых пассажиров, которые за наличку едут). На станции сажать пассажиров по билетам. Каждому месту в вагоне должен соответствовать пассажир с билетом. Можно еще предусмотреть случайные отклонения пассажиров от своего "расписания", например, опоздания сесть на поезд или сойти на своей станции. Также у платформы должен быть список стоящих на ней пассажиров, меняющийся в реальном времени.
0
47 / 39 / 15
Регистрация: 28.09.2012
Сообщений: 818
20.08.2014, 03:36 14
Цитата Сообщение от Mr.X Посмотреть сообщение
Мне кажется, у каждого поезда должно быть расписание, по которому он должен следовать с некоторыми случайными отклонениями. У каждого пассажира должен быть билет, в котором указаны соответствующие данные (если мы не предусмотрим левых пассажиров, которые за наличку едут). На станции сажать пассажиров по билетам. Каждому месту в вагоне должен соответствовать пассажир с билетом. Можно еще предусмотреть случайные отклонения пассажиров от своего "расписания", например, опоздания сесть на поезд или сойти на своей станции. Также у платформы должен быть список стоящих на ней пассажиров, меняющийся в реальном времени
ну написать еще можно много чего, я всево лишь базовую простейшую систему описал по которой дальше б можно было по нужде улучшать. Зачем например продумывать все ето если задача стоит лишь в том что выше описал, а остальное можно легко добавить что надо будет уже ему

Добавлено через 2 минуты
тем болие автор и написал что ему просто надо систему по которой я сделал описание, тоесть еслибы ему билеты и лишняя дребидень надо было он бы отписал). Да да добавлять в такую систему можно много чего
0
191 / 90 / 33
Регистрация: 04.11.2013
Сообщений: 474
Записей в блоге: 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 указатель на следующий элемент односвязного списка
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2014, 05:14
Помогаю со студенческими работами здесь

Работа с контейнерными классами. Задача связана с авиабилетами
Написать программу учета на авиабилеты. Каждая заявка содержит: -пункт назначения - номер рейса...

Работа с крупными файлами и ускорение их сверки между собой
Добрый ночи уважаемые форумчане. Столкнулся с такой проблемой: В наличии у меня есть...

Работа с контейнерами: данные обнуляются при взаимодействии форм между собой
есть клас: struct lab_6_14 { public string Name; public int Phone; ...

Задача о городах
В стране 100 городов, некоторые из которых соединены авиалиниями. Известно, что от любого города...

Задача о дорогах и городах
Ввод: input.txt Вывод: output.txt Есть K городов, соединенных между собой N...

Задача о трех городах
Такая задача. Есть 3 города А,Б,В. Расстояние между городами известно и города расположены не на...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru