Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
41 / 4 / 0
Регистрация: 24.11.2013
Сообщений: 139

Обработка данных железнодорожного расписания. Массив структур

15.10.2014, 02:21. Показов 1960. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, подскажите, как правильно ввести направление поезда, почему-то после
C++
1
trains[NUM_OF_TRAIN].direction[MAX] =
ругается на скобку и просит выражение. я решила идти через структуры к решению поставленной задачи. код еще не дописан, задание вот:

Разработать программу обработки данных железнодорожного расписания. Известно расписание поездов,
проходящих через станцию: номер поезда, назначение (откуда куда, например, Москва—Омск), часы и мину¬ты прибытия,
часы и минуты отправления. Значения часов и минут целые, положительные числа; число часов не превышает 23, число минут – 59.
Общее количество проходящих поездов равно 25. Поезда приходят каждый день по одному расписанию. По заданному времени определить,
какие поезда (номер и назначение) стоят в этот момент на станции и сколько времени осталось до отправления каждого.
и кстати, правильно ли я задала диапазон случайных чисел от 0 до 59 и от 0 до 23?
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
60
61
62
63
64
65
66
67
68
69
#include "stdafx.h"
#include <iostream>
using namespace std;
 const int NUM_OF_TRAIN = 25;
 const int MAX = 80;
 
 
struct Time
{
    int hour, minutes;
};
 
struct Train
{
    char direction[MAX];
    Time arival, departure;
};
 
 
int main()
{
    Train trains[NUM_OF_TRAIN];
    void random(Train);
    random(trains[NUM_OF_TRAIN]);
 
 
 
}
 
void random(Train trains[])
{
    for (int i = 0; i<MAX; i++) 
    {
        trains[i].arival.hour = 0+rand()%23;
        trains[i].arival.minutes = 0+rand()%59;
        trains[i].departure.hour = 0+rand()%23;
        trains[i].departure.minutes = 0+rand()%59;
    }
    trains[NUM_OF_TRAIN].direction[MAX] = 
    {
        "baranovichi-zhitomir", 
        "minsk-simferopol",
        "kaliningrad-adler",
        "minsk-odessa",
        "minsk-simferopol",
        "minsk–kalinkovichi–gomel",
        "minsk-gomel",
        "minsk-adler",
        "minsk-mineralnye",
        "minsk-anapa",
        "minsk-feodosiya",
        "minsk-kiev",
        "minsk-simferopol",
        "baranovichi-mariupol",
        "minsk-evpatoriya",
        "simferopol-minsk",
        "grodno-gomel", 
        "simferopol-minsk",
        "gomel-minsk",
        "minsk–kalinkovichi",
        "mariupol-minsk",
        "minsk–kishinev",
        "baranovichi-zhitomir", 
        "minsk-simferopol"
        "kaliningrad-adler",
    };
 
 
}
Добавлено через 1 час 50 минут
пошел 3 час
код написан полностью, но пишет синтаксические ошибки в функции рандома. хоть убейте, не вижу. скобки раз 10 пересчитала. но не факт что этот код вообще рабочий.
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include <iostream>
using namespace std;
 const int NUM_OF_TRAIN = 25;
 const int MAX = 80;
 
 
struct Time
{
    int hour, minutes;
};
 
struct Train
{
    char direction[MAX];
    Time arival, departure;
};
 
 
int main()
{
    Train trains[NUM_OF_TRAIN];
    Time time_user;
    int hour_to_minutes(Time);
    void random(Train);
    random(trains[NUM_OF_TRAIN]);
    cout << "Enter time (h, m)" << endl;
    cin >> time_user.hour >> time_user.minutes;
    for (int i = 0; i<NUM_OF_TRAIN; i++)
    {
        if (hour_to_minutes(trains[i].arival) > hour_to_minutes(trains[i].departure))
        {
            if ((hour_to_minutes(time_user) >= hour_to_minutes(trains[i].arival) && hour_to_minutes(time_user) <= 1439) || (hour_to_minutes(time_user) >= 0 && hour_to_minutes(time_user) <= hour_to_minutes(trains[i].departure)))
            {
                cout << "remaining time: " << 1439 - (hour_to_minutes(trains[i].arival) + hour_to_minutes(time_user)) / 60 << "hour " <<  (hour_to_minutes(trains[i].arival) + hour_to_minutes(time_user)) % 60 << " minutes" << endl;
                cout << "Direction: " << trains[i].direction << endl;
            }
        }
        if (hour_to_minutes(trains[i].arival) < hour_to_minutes(trains[i].departure))
        {
            if ((hour_to_minutes(time_user) > hour_to_minutes(trains[i].arival)) && (hour_to_minutes(time_user) < hour_to_minutes(trains[i].departure)))
            {
                cout << "remaining time: " << (hour_to_minutes(trains[i].departure) - hour_to_minutes(time_user) / 60) << "hour " <<  (hour_to_minutes(trains[i].departure) - hour_to_minutes(time_user) % 60) <<  " minutes" << endl;
                cout << "Direction: " << trains[i].direction << endl;
            }
        }
    }
    return 0;
};
 
void random(Train trains[])
{
    for (int i = 0; i<MAX; i++) 
    {
        trains[i].arival.hour = 0+rand()%23;
        trains[i].arival.minutes = 0+rand()%59;
        trains[i].departure.hour = 0+rand()%23;
        trains[i].departure.minutes = 0+rand()%59;
    }
    trains[NUM_OF_TRAIN].direction[MAX] = { "baranovichi-zhitomir", 
        "minsk-simferopol",
        "kaliningrad-adler",
        "minsk-odessa",
        "minsk-simferopol",
        "minsk–kalinkovichi–gomel",
        "minsk-gomel",
        "minsk-adler",
        "minsk-mineralnye",
        "minsk-anapa",
        "minsk-feodosiya",
        "minsk-kiev",
        "minsk-simferopol",
        "baranovichi-mariupol",
        "minsk-evpatoriya",
        "simferopol-minsk",
        "grodno-gomel", 
        "simferopol-minsk",
        "gomel-minsk",
        "minsk–kalinkovichi",
        "mariupol-minsk",
        "minsk–kishinev",
        "baranovichi-zhitomir", 
        "minsk-simferopol"
        "kaliningrad-adler"};
};
 
    int hour_to_minutes(Time T)
    {
        return (T.hour*60)+T.minutes;
    };
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2014, 02:21
Ответы с готовыми решениями:

Структуры.Обработка массивов структур.Создать массив структур из 10-ти элементов
Создать массив структур из 10-ти элементов: &lt;Номер договора&gt;&lt;Фамилия клиента&gt;&lt;стоимость товара&gt;&lt;выплаченная сумма&gt; ...

Обработка данных структур
Разработать программу с пользовательскими функциями для решения следующей задачи: составить структуру данных, описывающую заданную...

Обработка структур данных
Здравствуйте.никак не могу понять задачу. подскажите решение. в голову ничего не лезит. (задача на языке СИ) вот условие: Сведения о...

8
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2014, 04:17
Цитата Сообщение от Pari Посмотреть сообщение
но не факт что этот код вообще рабочий.
тут и возразить нечего.
Pari, а что за символы у Вас то и дело вместо дефиса в массиве маршрутов-направлений?
Вот проверьте и допишите:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <string.h>
using namespace std;
 
const int NUM_OF_TRAIN = 25;
const int MAX = 80;
char *directions[NUM_OF_TRAIN] = 
    {
        "baranovichi-zhitomir", 
        "minsk-simferopol",
        "kaliningrad-adler",
        "minsk-odessa",
        "minsk-simferopol",
        "minsk-kalinkovichi-gomel",
        "minsk-gomel",
        "minsk-adler",
        "minsk-mineralnye vody",
        "minsk-anapa",
        "minsk-feodosiya",
        "minsk-kiev",
        "minsk-simferopol",
        "baranovichi-mariupol",
        "minsk-evpatoriya",
        "simferopol-minsk",
        "grodno-gomel", 
        "simferopol-minsk",
        "gomel-minsk",
        "minsk-kalinkovichi",
        "mariupol-minsk",
        "minsk-kishinev",
        "baranovichi-zhitomir", 
        "minsk-simferopol",
        "kaliningrad-adler"
    };
 
struct Times
{
    Times():hour(0), minutes(0){}
    Times(int h, int m):hour(h), minutes(m){}
    Times(const Times &rhs):hour(rhs.hour), minutes(rhs.minutes){}  
    int hour, minutes;
    void show() const{
cout << "hour= " << hour << endl;
cout << "minutes= " << minutes << endl;
    }
};
 
int add_hours(int hours, int delta);
void add_minites(Times &times, int delta);
 
struct Train
{
    Train(){
        strcpy(direction, "None");
    }
    Train(char *dir, Times arival_, int stop_interval){
        strcpy(direction, dir);
        arival = arival_;
        departure = arival;
        add_minites(departure, stop_interval);
    }
Train(const Train &rhs){
        strcpy(direction, rhs.direction);
        arival = rhs.arival;
        departure = rhs.departure;      
    }
 
    char direction[MAX];
    Times arival, departure;
 
    void show(){
cout << direction << endl;
arival.show();
departure.show();
    }
};
 
void randomize(Train&, int);
 
int main()
{
Train trains[NUM_OF_TRAIN];
 
for( size_t i = 0; i < NUM_OF_TRAIN; ++i )  {
randomize(trains[i], i);
cout<<(i+1)<<"------------------------------"<<endl;
trains[i].show();
} 
cout << endl;
system("pause");
    return 0; 
}
 
int add_hours(int hours, int delta){
if(  hours + delta > 23 ) hours = (hours+delta)%24;
else hours += delta;
return hours;
}
 
void add_minites(Times &times, int delta){
    if( times.minutes  + delta > 59 ) {     
        times.hour = add_hours(times.hour, (times.minutes + delta)/60);
        times.minutes = (times.minutes + delta)%60;
    }else times.minutes  += delta;
}
 
void randomize(Train &train, int ind)
{
    Times tim( rand()%23 , rand()%59 );
    int st_int = 1+rand()%14;//остановка 
 
    Train ret( directions[ ind ], tim, st_int );
   train = ret;
    }
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.10.2014, 04:31
Лучший ответ Сообщение было отмечено Pari как решение

Решение

C++
1
2
for (int i = 0; i<MAX; i++) 
    {
Размер массива trains разве MAX?

Добавлено через 13 минут
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
char *directions[NUM_OF_TRAIN] = 
{
    "baranovichi-zhitomir", 
    "minsk-simferopol",
    "kaliningrad-adler",
    "minsk-odessa",
    "minsk-simferopol",
    "minsk-kalinkovichi-gomel",
    "minsk-gomel",
    "minsk-adler",
    "minsk-mineralnye vody",
    "minsk-anapa",
    "minsk-feodosiya",
    "minsk-kiev",
    "minsk-simferopol",
    "baranovichi-mariupol",
    "minsk-evpatoriya",
    "simferopol-minsk",
    "grodno-gomel", 
    "simferopol-minsk",
    "gomel-minsk",
    "minsk-kalinkovichi",
    "mariupol-minsk",
    "minsk-kishinev",
    "baranovichi-zhitomir", 
    "minsk-simferopol",
    "kaliningrad-adler"
};
...
void random(Train*);
...
Train trains[NUM_OF_TRAIN];
random(trains)
...
void random(Train trains[])
{
    for (int i = 0; i< NUM_OF_TRAIN; i++) 
    {
        trains[i].arival.hour = 0+rand() %23;
        trains[i].arival.minutes = 0+rand() % 59;
        trains[i].departure.hour = 0+rand() % 23;
        trains[i].departure.minutes = 0+rand()%59;
    
        strcpy(trains[i].direction, directions[i]); 
    }
};;
...
1
41 / 4 / 0
Регистрация: 24.11.2013
Сообщений: 139
15.10.2014, 16:04  [ТС]
вот такую ошибку выдает:



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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "stdafx.h"
#include <iostream>
using namespace std;
 const int NUM_OF_TRAIN = 25;
 const int MAX = 80;
 
 
struct Time
{
    int hour, minutes;
};
 
struct Train
{
    char direction[MAX];
    Time arival, departure;
};
 
 
void random(Train*);
 
int main()
{
    Train trains[NUM_OF_TRAIN];
    Time time_user;
    int hour_to_minutes(Time);
    random(trains);
    cout << "Enter time (h, m)" << endl;
    cin >> time_user.hour >> time_user.minutes;
    for (int i = 0; i<NUM_OF_TRAIN; i++)
    {
        if (hour_to_minutes(trains[i].arival) > hour_to_minutes(trains[i].departure))
        {
            if ((hour_to_minutes(time_user) >= hour_to_minutes(trains[i].arival) && hour_to_minutes(time_user) <= 1439) || (hour_to_minutes(time_user) >= 0 && hour_to_minutes(time_user) <= hour_to_minutes(trains[i].departure)))
            {
                cout << "remaining time: " << 1439 - (hour_to_minutes(trains[i].arival) + hour_to_minutes(time_user)) / 60 << "hour " <<  (hour_to_minutes(trains[i].arival) + hour_to_minutes(time_user)) % 60 << " minutes" << endl;
                cout << "Direction: " << trains[i].direction << endl;
            }
        }
        if (hour_to_minutes(trains[i].arival) < hour_to_minutes(trains[i].departure))
        {
            if ((hour_to_minutes(time_user) > hour_to_minutes(trains[i].arival)) && (hour_to_minutes(time_user) < hour_to_minutes(trains[i].departure)))
            {
                cout << "remaining time: " << (hour_to_minutes(trains[i].departure) - hour_to_minutes(time_user) / 60) << "hour " <<  (hour_to_minutes(trains[i].departure) - hour_to_minutes(time_user) % 60) <<  " minutes" << endl;
                cout << "Direction: " << trains[i].direction << endl;
            }
        }
    }
    return 0;
};
 
void random(Train trains[])
{
    char *directions[NUM_OF_TRAIN] = { "baranovichi-zhitomir", 
        "minsk-simferopol",
        "kaliningrad-adler",
        "minsk-odessa",
        "minsk-simferopol",
        "minsk–kalinkovichi–gomel",
        "minsk-gomel",
        "minsk-adler",
        "minsk-mineralnye",
        "minsk-anapa",
        "minsk-feodosiya",
        "minsk-kiev",
        "minsk-simferopol",
        "baranovichi-mariupol",
        "minsk-evpatoriya",
        "simferopol-minsk",
        "grodno-gomel", 
        "simferopol-minsk",
        "gomel-minsk",
        "minsk–kalinkovichi",
        "mariupol-minsk",
        "minsk–kishinev",
        "baranovichi-zhitomir", 
        "minsk-simferopol"
        "kaliningrad-adler"};
 
    for (int i = 0; i<NUM_OF_TRAIN; i++) 
    {
        trains[i].arival.hour = 0+rand()%23;
        trains[i].arival.minutes = 0+rand()%59;
        trains[i].departure.hour = 0+rand()%23;
        trains[i].departure.minutes = 0+rand()%59;
        strcpy_s(trains[i].direction, directions[i]);
    }
};
 
 
    int hour_to_minutes(Time T)
    {
        return (T.hour*60)+T.minutes;
    };
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.10.2014, 16:06
После "minsk-simferopol" запятую поставьте.
1
41 / 4 / 0
Регистрация: 24.11.2013
Сообщений: 139
15.10.2014, 16:08  [ТС]
конечно работает не совсем так как надо но это уже алгоритмические мелочи, всем спасибо
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
15.10.2014, 17:56
Цитата Сообщение от alsav22 Посмотреть сообщение
После "minsk-simferopol" запятую поставьте.
В первом варианте была после "kaliningrad-adler". Потом исчезла и не появилась после "minsk-simferopol".
Цитата Сообщение от Pari Посмотреть сообщение
конечно работает не совсем так как надо но это уже алгоритмические мелочи
Pari, сегодня каждый пряник может трактовать Кнута. Демократия. А ему, Дональду, всё едино.
Смотрите, Вы генерите случайно и прибытие и отправление и это значит, что состав легко может отправиться раньше чем прибыл, что может трактоваться как остановка сроком более суток. А ведь даже на узловых станциях и при пересцепке составов их редко задерживают более чем на час. Кроме того, поскольку даты суток прибытия/отбытия Вы не включили в класс, то определять интервал стоянки у состава который пришел за пару минут до 0:0 и постоял минут десять, вычитанием времени нельзя. Это придётся делать алогритмически используя логику, в которой возможность стоянки 24 часа и более, всё развалит. Соберитесь, посмотрите ещё раз и подумайте.
0
41 / 4 / 0
Регистрация: 24.11.2013
Сообщений: 139
15.10.2014, 18:23  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Pari, сегодня каждый пряник может трактовать Кнута. Демократия. А ему, Дональду, всё едино.
Смотрите, Вы генерите случайно и прибытие и отправление и это значит, что состав легко может отправиться раньше чем прибыл, что может трактоваться как остановка сроком более суток. А ведь даже на узловых станциях и при пересцепке составов их редко задерживают более чем на час. Кроме того, поскольку даты суток прибытия/отбытия Вы не включили в класс, то определять интервал стоянки у состава который пришел за пару минут до 0:0 и постоял минут десять, вычитанием времени нельзя. Это придётся делать алогритмически используя логику, в которой возможность стоянки 24 часа и более, всё развалит. Соберитесь, посмотрите ещё раз и подумайте.
я понимаю о чем вы говорите, но, если бы я могла свободно потратить на эту программу пару дней - я бы потратила, но реалии таковы, что мне еще предстоит целая туча нерешенных задач в малые сроки, потому я без особых угрызений совести не довожу программу до идеала, если в условии того не сказано
мне еще 20 задач предстоит по файлам, а я до сих пор в указателях плаваю, что такое эти файлы еще даже толком не знаю
0
15.10.2014, 22:55

Не по теме:

Цитата Сообщение от Pari Посмотреть сообщение
я понимаю о чем вы говорите
не берите в голову. Просто среагировал на алгоритмические мелочи. Теперь жалею уже. Удачи. :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2014, 22:55
Помогаю со студенческими работами здесь

Обработка файловых структур данных
Вычислить общую сумму выплат по цеху Х , среднемессячнай заработок рабочего цеха

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

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

обработка файловых структур данных
1. Создать файл, содержащий сведения о том, какие из пя-ти предлагаемых дисциплин по выбору желает слушать студент. Структура записи:...

Обработка данных структур Worker
Создать структуру под названием Worker с полями фамилия, возраст, специальность, оклад. Создать функции ввода/вывода объектов структуры....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru