Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Outmee
2 / 2 / 1
Регистрация: 26.01.2014
Сообщений: 59

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

19.08.2014, 16:02. Показов 1709. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2014, 16:02
Ответы с готовыми решениями:

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

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

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

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

Не по теме:

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

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

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

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

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

Добавлено через 2 минуты
тем болие автор и написал что ему просто надо систему по которой я сделал описание, тоесть еслибы ему билеты и лишняя дребидень надо было он бы отписал). Да да добавлять в такую систему можно много чего
0
 Аватар для Alexandr_1982
191 / 90 / 33
Регистрация: 04.11.2013
Сообщений: 473
Записей в блоге: 4
20.08.2014, 05:14
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2014, 05:14
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru