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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 59
Завершенные тесты: 1
#1

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

19.08.2014, 16:02. Просмотров 613. Ответов 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 количество пассажиров.
Прямее сказать: хочется на деле увидеть пару живых примеров
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2014, 16:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с классами и пересечение их между собой (задача о городах и поездах) (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Alexandr_1982
176 / 72 / 17
Регистрация: 04.11.2013
Сообщений: 382
Записей в блоге: 4
19.08.2014, 17:42 #2
Город это вершина графа. Дорога между двумя городами это ребро графа. Поиск пути на графе между двумя городами. http://algolist.manual.ru/maths/graphs/
Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 59
Завершенные тесты: 1
19.08.2014, 18:02  [ТС] #3
Alexandr_1982, Вы, Меня не поняли, мне не нужно искать кратчайший маршрут, мне просто нужно построить систему,
это задача проверка работы с классами, взаимодействие. Создание 150 пассажиров на каждой станции, их размещение по вагонам и достижение их целей (Городов, вокзалов), ведение статистики. Не больше, не меньше.
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.08.2014, 18:52 #4
Цитата Сообщение от Outmee Посмотреть сообщение
мне просто нужно построить систему
Ну так и нужно сначала спроектировать систему, а потом программу писать. А поезда у вас в реальном времени должны двигаться что ли?
Мне кажется, еще стоит кассы добавить, в которых билеты будут продаваться в реальном времени.
some_name
Вежливость-главное оружие
221 / 221 / 55
Регистрация: 19.02.2013
Сообщений: 1,431
19.08.2014, 19:15 #5
Цитата Сообщение от Outmee Посмотреть сообщение
Есть города, в каждом городе есть станция, на станции пассажиры, у пасажира есть цель поездки(N - ый город).
Напоминает матрешку. Такие задачи кажуться сложными, но это на первый взгляд. Делайте все по тексту задачи и все.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
19.08.2014, 19:15 #6
В общем случае программы, библиотеки и прочие продукты жизнедеятельности разработчиков состоят из данных, логики и интерфейса.
Большую часть словесного описания в первом посте составляет описание данных. Соответственно, и классы, представленные ниже - данные.
"Взаимодействие" классов между собой - это логика. Которой пока нет. Для ее реализации кажется разумным написать другие классы и(или) функции. Но для этого нужно четко описать функционирование разрабатываемой модели.
Поскольку сейчас описания нет, могу только выделить один более-менее сформулированный вопрос:
Цитата Сообщение от Outmee Посмотреть сообщение
как создать N количество пассажиров
Если предполагается, что в начальном состоянии системы на каждой станции есть некоторое количество пассажиров (т.е. мы обрабатываем набор пассажиров, а не обслуживаем поток), то все просто - пишем отдельную функцию, которая обходит все станции и добавляет на них пассажиров. Станция же должна предоставить соответствующие методы для добавления.
Цитата Сообщение от Outmee Посмотреть сообщение
их (пассажиров - прим. меня) размещение по вагонам
Функция, которая принимает на вход станцию и доступный вагон и перемещает пассажиров со станции в вагон. Какая будет связь м/у станцией и составом - смотрите по удобству.
Цитата Сообщение от Outmee Посмотреть сообщение
достижение их целей (Городов, вокзалов), ведение статистики
Мое травмированное сознание видит тут дискретно-событийную имитационную модель.
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.08.2014, 19:32 #7
Цитата Сообщение от 0x10 Посмотреть сообщение
пишем отдельную функцию, которая обходит все станции и добавляет на них пассажиров.
Ну, поскольку программа объектно-ориентированная, то наверно поезд должен иметь функцию-член, загружающую в него стоящих на платформе станции пассажиров.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
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
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.08.2014, 19:41 #10
Цитата Сообщение от 0x10 Посмотреть сообщение
Процесс перехода пассажира - отдельная сущность.
Ну, в реальной жизни поезд сам с помощью своих проводников загружает пассажиров. Мы же реальную жизнь моделируем.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
19.08.2014, 19:48 #11
Цитата Сообщение от Mr.X Посмотреть сообщение
Мы же реальную жизнь моделируем.
Модели всегда реализуются с некоторой точностью до необходимого уровня. Поскольку целей не было обозначено, то я не вижу повода, по которому этот момент можно считать принципиальным.
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, в реальной жизни поезд сам с помощью своих проводников загружает пассажиров.
Хоть и было сказано о персонале, но мне упорно представляется поезд с экскаваторным ковшом.

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

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

Добавлено через 2 минуты
тем болие автор и написал что ему просто надо систему по которой я сделал описание, тоесть еслибы ему билеты и лишняя дребидень надо было он бы отписал). Да да добавлять в такую систему можно много чего
Alexandr_1982
176 / 72 / 17
Регистрация: 04.11.2013
Сообщений: 382
Записей в блоге: 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 указатель на следующий элемент односвязного списка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2014, 05:14
Привет! Вот еще темы с ответами:

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

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

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

Cisco Packet Tracer. Как соединить удаленно между собой сети, установив между ними защищённое SSL соединение? - Cisco
Помогите, пожалуйста, разобраться в задаче. Необходимо построить сеть предприятия, в составе которой имеются 3 здания, два из них находятся...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.08.2014, 05:14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru