С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Shamil1239XD
4 / 1 / 3
Регистрация: 28.04.2021
Сообщений: 120

Структура "Расписание движения пригородных поездов"

29.09.2021, 15:29. Показов 1886. Ответов 14
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
СтруктураРасписание движения пригородных поездов): номер поезда, конечный пункт назначения, время отправления, продолжительность путешествия.

Задание:Вычислить время прибытия поездов и вывести сведения о маршрутах продолжительностью более трех часов.

Помогите пожалуйста разобраться!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.09.2021, 15:29
Ответы с готовыми решениями:

Структуры: расписание движения поездов
Расписание движения поездов включает следующую информацию: номер поезда станция назначения, время отправления, дни отправления, время...

Структура:расписание поездов
введите информацию про поезда: номер поезда, название направление движения, время прибытия. вывести на экран или сообщение о поездах,...

Расписание поездов
Разработать программу, управляющую списком из двух записей. Работа в Qt, нужно создать оконное приложение. Я составила, как должно всё...

14
Заблокирован
29.09.2021, 16:00
Цитата Сообщение от Shamil1239XD Посмотреть сообщение
Задание:Вычислить время прибытия поездов и вывести сведения о маршрутах продолжительностью более трех часов.
Организуйте следующие операции :
вычитание времени (включая смещение по суткам (22(время отправления)+5(время следования)=3 часа))
Все остальное тривиально.
0
 Аватар для Shamil1239XD
4 / 1 / 3
Регистрация: 28.04.2021
Сообщений: 120
29.09.2021, 16:16  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
 
typedef struct
{
    string station;
    int number;
    int time;
}   TRAIN, *PTRAIN;
 
int main()
{
    vector<TRAIN> v;
    TRAIN t;
    
    // Ввод
    ifstream ifs("in.txt", ios::in);
    while(ifs)
    {
        ifs >> t.station;
        ifs >> t.number;
        ifs >> t.time;
        
        v.push_back(t);
    }
    ifs.close();
    
    string name;
    cout << "enter station: ";
    cin >> name;
    
    // Вывод
    bool c = false;
    for(int i = 0; i < v.size() - 1; ++i)
    {
        if(name == v[i].station)
        {
            cout << "---------------------------------------" << endl;
            cout << "STATION: " << v[i].station << endl;
            cout << "NUMBER: " << v[i].number << endl;
            cout << "TIME: " << v[i].time << endl;
            cout << "---------------------------------------" << endl;
            c = true;
        }
    }
    if(!c)
        cout << "not found!" << endl;
}
Как можно сюда это ввести?
Буду благодарен!
0
Заблокирован
29.09.2021, 16:23
Почему time - целый тип ?
Это должна быть структура с двумя (hh mm) или тремя(hh mm ss) целыми типами, взависимости от точности представления.
Дальше вроде понятно станет.

Добавлено через 1 минуту
и я не вижу время отправления
0
 Аватар для Shamil1239XD
4 / 1 / 3
Регистрация: 28.04.2021
Сообщений: 120
29.09.2021, 16:37  [ТС]
Время отправления это time а вот как продолжительность сделать. Да еще чтоб оно считало поезда коротые более 3 часов находились в пути
0
Заблокирован
29.09.2021, 17:01
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct Time{
   unsigned hh;
   unsigned mm;
};
 
struct
{
    string station;
    int number;
    Time start;
    unsigned elapse; // в минутах
}   TRAIN, *PTRAIN;
Продолжительность - целое число в минимальных единицах измерения времени , которую вы выбрали.
Допустем это будет минуты.
нужно определить операцию "плюс" для структуры Time и беззнакового целого
C++
1
2
3
Time operator+(const Time & t, const unsigned e){
   // ...
}
Добавлено через 1 минуту
Цитата Сообщение от Shamil1239XD Посмотреть сообщение
Да еще чтоб оно считало поезда коротые более 3 часов находились в пути
C++
1
2
TRAIN record;
3 * 60 > record.elapsed;
Добавлено через 2 минуты
Цитата Сообщение от Shamil1239XD Посмотреть сообщение
Задание:Вычислить время прибытия поездов и вывести сведения о маршрутах продолжительностью более трех часов.
Цитата Сообщение от SmallEvil Посмотреть сообщение
Да еще чтоб оно считало поезда коротые более 3 часов находились в пути
Это не тоже самое
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
29.09.2021, 17:43
класс лучше структуры
Например, класс для времени:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
 
using namespace std;
 
class Time
{
private:
   unsigned m_hour;
   unsigned m_minute;
public:
   Time(unsigned hour, unsigned minute)
   {
      setTime(hour, minute);
   }
   void setTime(unsigned hour, unsigned minute)
   {
      setHour(hour);
      setMinute(minute);
   }
   void setHour(unsigned hour)
   {
      if (hour > 23) {
         m_hour = 23;
      } else {
         m_hour = hour;
      }
   }
   void setMinute(unsigned minute)
   {
      if (minute > 59) {
         m_minute = 59;
      } else {
         m_minute = minute;
      }
   }
   unsigned getHour()
   {
      return m_hour;
   }
   unsigned getMinute()
   {
      return m_minute;
   }
   void print()
   {
      cout << m_hour << ":" << m_minute;
   }
};
 
int main()
{
   Time departure(8, 30);
   Time arrival(10, 45);
   cout << "Departure: ";
   departure.print();
   cout << "\nArrival: ";
   arrival.print();
   
}
0
Заблокирован
29.09.2021, 17:55
Цитата Сообщение от Royal_X Посмотреть сообщение
класс лучше структуры
и чем же ?

Добавлено через 1 минуту
Royal_X, ваш класс избыточен для данной задачи.

Добавлено через 1 минуту
и сеттеры неправильные
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
29.09.2021, 20:19
Цитата Сообщение от SmallEvil Посмотреть сообщение
и сеттеры неправильные
а как нужно?
0
Заблокирован
29.09.2021, 21:10
Royal_X, если будет такой не тривиальный класс времени, с возможностью внесения любых значений,
то сеттер должен быть примерно таким что бы иметь смысл.
Хоть с вашим подходом этого сложно добиться, но все же.

C++
1
2
3
   void setHour(unsigned hour){
         m_hour = hour%24 ;
   }
но в итоге ваш класс не решает поставленной задачи
Цитата Сообщение от Shamil1239XD Посмотреть сообщение
Задание:Вычислить время прибытия поездов
как это можно сделать я уже описал выше.

Добавлено через 12 минут
Минуты также должны добавлять значения к часам при >=60
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
29.09.2021, 21:16
Цитата Сообщение от SmallEvil Посмотреть сообщение
m_hour = hour%24
вы написали, что сеттеры неправильные, поэтому я уже думал-то, что допустил какую-нибудь ошибку в коде, а оказывается они не правильны просто из-за того, что они вам не нравятся.
Но вот зачем мне деление с остатком? Я написал такой код, какой и намеревался написать: чтобы при вводе часа больше 23 значение оставалось 23.

Добавлено через 2 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
Минуты также должны добавлять значения к часам при >=60
зачем?????????
например, пользователь ввел time(8, 60), зачем его превращать в 9:00 ??????
Это же сеттер, Карл, а не кварцевый механизм. Тут даже правильнее при вводе значения больше 60 выдавать предупреждение о некорректном формате ввода.
0
Заблокирован
29.09.2021, 21:33
Цитата Сообщение от Royal_X Посмотреть сообщение
Я написал такой код, какой и намеревался написать: чтобы при вводе часа больше 23 значение оставалось 23.
и чем такой код поможет в поставленной задаче ?

Добавлено через 2 минуты
Цитата Сообщение от Royal_X Посмотреть сообщение
например, пользователь ввел time(8, 60), зачем его превращать в 9:00 ??????
потому что нет такого времени как 8:60.
То есть ваш класс не соответствует ни своему названию ни назначению.
С таким успехом его можно назвать Velosyped
И добавить бессмысленные поля, просто потому что вы так захотели.
В адекватном программировании нет такому места.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6147 / 2840 / 1040
Регистрация: 01.06.2021
Сообщений: 10,353
29.09.2021, 22:05
SmallEvil,
потому что нет такого времени как 8:60.
по этой причине при вводе 8:60 мой сеттер преобразовывает время в 8:59
0
 Аватар для Shamil1239XD
4 / 1 / 3
Регистрация: 28.04.2021
Сообщений: 120
30.09.2021, 09:38  [ТС]
Ребят, а как это все грамотно ввести в код?
+ это все считывается с файла
0
Заблокирован
30.09.2021, 13:51
Лучший ответ Сообщение было отмечено Shamil1239XD как решение

Решение

Shamil1239XD,
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <iomanip>
using std::size_t;
using std::cin; using std::cout; using std::endl;
using std::setw; using std::setfill;
struct simpletime_t{
    size_t hh{},mm{};
};
struct traininfo_t
{
    std::string station;     // станция назначения
    size_t number;         // номер поезда
    simpletime_t start; // время отправления
    size_t elapse;      // продолжительность движения в минутах 
};  
using timetable_t = std::vector<traininfo_t>;
 
simpletime_t operator+(const simpletime_t& t, size_t m_add){
    return {(t.hh + (t.mm+m_add)/60)%24, (t.mm + m_add) % 60 };
}
 
int main()
{
    timetable_t TimeTable;
    traininfo_t TrainInfo;
    std::ifstream fin("input.txt");
    while(  fin>>TrainInfo.station &&  fin>>TrainInfo.number &&
            fin>>TrainInfo.start.hh && fin.get()==int(':') && fin>>TrainInfo.start.mm && 
            fin>>TrainInfo.elapse){
        TimeTable.push_back(TrainInfo);
    }
    fin.close(); // дальше работаем с вектором, файл больше не нужен
    const size_t time_filter = 3*60;
    simpletime_t st_tmp;
    for(const auto & rec : TimeTable)
    {
        if(rec.elapse > time_filter)
        {
            st_tmp = rec.start + rec.elapse;
            cout << "---------------------------------------" << endl;
            cout << "STATION   : " << rec.station << endl;
            cout << "NUMBER    : " << rec.number << endl;
            cout << "DEPARTURE : " << setw(2) << setfill('0') << rec.start.hh;
            cout << ':';
            cout << setw(2) << setfill('0') << rec.start.mm << endl;
            cout << "ARRIVAL   : " << setw(2) << setfill('0') << st_tmp.hh;
            cout << ':';
            cout << setw(2) << setfill('0') << st_tmp.mm << endl;
            cout << "---------------------------------------" << endl;
        }
    }
    return 0;
}


тестовый файл input.txt :
Code
1
2
3
4
Piter    25003 23:00 900
Moscov   99005 11:35 1200
Rabota   3103  08:20 50
Derevnia 3103  18:00 125
вывод :
Code
1
2
3
4
5
6
7
8
9
10
11
12
---------------------------------------
STATION   : Piter
NUMBER    : 25003
DEPARTURE : 23:00
ARRIVAL   : 14:00
---------------------------------------
---------------------------------------
STATION   : Moscov
NUMBER    : 99005
DEPARTURE : 11:35
ARRIVAL   : 07:35
---------------------------------------
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2021, 13:51
Помогаю со студенческими работами здесь

Расписание поездов структуры
1. Описать структуру TRAIN с полями: · название пункта отправления; · название пункта назначения; · номер поезда; · день...

Отсортировать расписание поездов по пункту назначения
Не могу найти ошибку, выдает что в программе есть ошибка. Помогите, пожалуйста найти ошибку. #include &lt;iostream&gt; using namespace...

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

Программа "структуры". Расписание поездов.
Друзья, помогите пожалуйста с написанием вот этой программы. В расписании поездов указано: номер поезда, пункт отправления,...

Расписание движения транспорта
реализовать задачу, в которой при вводе с клавиатуры номера автобуса выводилось его расписание(номер автобуса и время прибытия на нашу...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru