Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.03.2015
Сообщений: 3
1

Сортировка структур

25.03.2015, 10:36. Показов 1205. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите составить программу, пожалуйста!
Дана структура "поезд" с полями:
Наименование маршрута
Время отправления
Время прибытия
Длина маршрута
Ввести несколько структур и отсортировать поезда
а) по времени движения;
б) по средней скорости движения;
Вывести наименование маршрутов, время в пути для которых меньше заданного времени.

Заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2015, 10:36
Ответы с готовыми решениями:

Блочная сортировка структур (Отсортировать массив структур по фамилии)
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив...

Сортировка структур
Доброго времени суток! Помогите, пожалуйста, с сортировкой односвязного списка структур. С...

Сортировка структур
Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий...

Сортировка структур
Подскажите с сортировкой. В функции SortSwap отсортировал по среднему значения. Но в самой...

2
Мишка Косолапый :)
284 / 254 / 86
Регистрация: 15.02.2012
Сообщений: 1,511
25.03.2015, 11:15 2
Сравниваешь структуры по определенному параметру, например marsrut.dlina, заменяешь ее полностью через временную переменную типа вашей структуры
1
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
25.03.2015, 17:51 3
Лучший ответ Сообщение было отмечено Daria H как решение

Решение

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
#include <iostream>
#include <string>
#include <algorithm>
#include <boost/date_time/posix_time/posix_time.hpp>
 
namespace pt = boost::posix_time;
 
struct train
{
    std::string name_of_route;
    pt::ptime time_of_sending;
    pt::ptime time_of_arrival;
    int length_of_route;
};
 
std::ostream & operator<< (std::ostream &, const train &);
 
int main()
{
    pt::ptime current_date (pt::second_clock::local_time());
    int const N = 5;
    train trains[N] =
    {
        {"Qwerty", current_date, current_date + pt::hours (5) + pt::minutes(30), 155},
        {"Abc", current_date, current_date + pt::hours (30), 800},
        {"C++", current_date, current_date + pt::hours (100) + pt::minutes(5), 5000},
        {"Cyber", current_date, current_date + pt::minutes (55) + pt::seconds(30), 40},
        {"WWW", current_date, current_date + pt::minutes (60), 200}
    };
 
    // средняя скорость каждого поезда
    double middle_speed[N];
 
    // время в пути каждого поезда
    pt::time_duration time_in_way[N];
 
    for (int i = 0; i < N; i++)
    {
        pt::time_period t_period (trains[i].time_of_sending, trains[i].time_of_arrival);
        time_in_way[i] = t_period.length();
        middle_speed[i] = trains[i].length_of_route / (time_in_way[i].hours() +
                                                       time_in_way[i].minutes() / 60.0 +
                                                       time_in_way[i].seconds() / 3600.0);
    }
 
    // сортировка по времени в пути
    for (int i = 0; i < N - 1; i++)
    {
        for (int j = i + 1; j < N; j++)
        {
            if (time_in_way[j] < time_in_way[i])
            {
                std::swap (trains[i], trains[j]);
                std::swap (time_in_way[j], time_in_way[i]);
            }
        }
    }
 
    for (int i = 0; i < N; i++)
        std::cout <<trains[i];
 
    std::cout <<"---------------------------------------------\n";
 
    // время в пути - меньше 4 часов
    int time_hours = 4;
    for (int i = 0; i < N && time_in_way[i].hours() +
                             time_in_way[i].minutes() / 60.0 +
                             time_in_way[i].seconds() / 3600.0 < time_hours; i++)
    {
        std::cout << trains[i].name_of_route << std::endl;
    }
 
    std::cout <<"---------------------------------------------\n";
 
    // сортировка по средней скорости движения
    for (int i = 0; i < N - 1; i++)
    {
        for (int j = i + 1; j < N; j++)
        {
            if (middle_speed[j] < middle_speed[i])
            {
                std::swap (trains[i], trains[j]);
                std::swap (middle_speed[j], middle_speed[i]);
            }
        }
    }
 
    for (int i = 0; i < N; i++)
        std::cout <<trains[i];
 
    std::cout <<"---------------------------------------------\n";
}
 
std::ostream & operator<< (std::ostream & stream, const train & object)
{
    stream << object.name_of_route << std::endl
           << object.time_of_sending << std::endl
           << object.time_of_arrival << std::endl
           << object.length_of_route << "\n\n";
    return stream;
}
0
25.03.2015, 17:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2015, 17:51
Помогаю со студенческими работами здесь

Сортировка структур
struct Man{ char name; Название книги char avtor; Автор int day; год...

Сортировка структур
Хочу отсортировать структуру по номеру поезда пузырьковым методом. Написал такой код: station...

Сортировка Структур
Как организовать обмен по типу данных char? Какие есть способы сортировки в таких случаях? ...

Сортировка структур
Задание такое: Разработайте программу для обработки структурных типов данных. Реализуйте отдельные...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru