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

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

Войти
Регистрация
Восстановить пароль
 
AlisherIITU
2 / 2 / 1
Регистрация: 10.09.2013
Сообщений: 129
#1

Сортировка времени - C++

04.10.2013, 22:05. Просмотров 1099. Ответов 3
Метки нет (Все метки)

Time sorting

From input your program have to read N (1<=N<=100) - the total number of time interval than have to be sorted. Each line contains data in following format HH MM SS
HH (hours) - from 0 to 23
MM (minutes) - from 0 to 60
SS (seconds) - from 0 to 60

The output have to contain time intervals in nondescending order in give format.

Input sample:
4
10 20 30
7 30 00
23 59 59
13 30 30

Output sample:
7 30 0
10 20 30
13 30 30
23 59 59
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 22:05     Сортировка времени
Посмотрите здесь:

Сортировка времени. - C++
Требуется выполнить сортировку временных моментов, заданных в часах, минутах и секундах. Входные данные Во входном файле INPUT.TXT в...

Проверка на правильность времени, и показ времени - C++
Подскажите, что нужно возвращать в функцию bool is_correct(TIME t); и как эту функцию коректности времени всунуть в функцию void...

Сортировка подсчетом и LSD сортировка - C++
Кто может дать реализацию сортировки подсчетом и lsd сортировки на C?

Сортировка методом "быстрая сортировка" - C++
Здравствуйте! Имеется структура: struct BMS_Data { int* SortNodesList; double* NodesX; double* NodesY; ...

Сортировка времени - Turbo Pascal
Требуется выполнить сортировку временных моментов, заданных в часах, минутах и секундах. Входные данные Во входном файле INPUT.TXT в...

Сортировка по времени - Delphi
Всем доброго времени суток! Надеюсь на здешних гуру. Как можно отсортировать записи в StringGrid по времени? Т.е. время (например 07:05)...

Сортировка по времени - SQL Server
Строки вида Дата старта, Дата окончания, Значение (20120508, 20120812, 1), (20120708, 20120816, 2), (20120806, 20120813, 3) надо...

Генерация и сортировка времени - VBA
Sub dfv() Dim min As Byte Dim min1 As Byte Dim n As Byte Dim ma As Byte Dim s As Byte Cells.Clear n =...

SortedSet сортировка времени - Java SE
есть дата день, месяц, год час, минута, секунда, нужно отсортировать в обратно порядке

Сортировка таблицы (даты по времени) - MySQL
Добрый день. Возникла такая проблема, есть поле в таблице int, в котором хранится дата в unix-времени. Сортировка по дате...

Сортировка строк по дате и времени - MS Access
Привет всем. Подскажите, нигде не могу инфу найти. Как грамотно упорядочить строки, к примеру, в порядке возрастания даты ? И как это же...

Сортировка данных в реальном времени - C#
Всем привет собственно вопрос. Я осуществляю поиск файла по имени из текущей директории. Файлов может быть и 100 и 200 и 1000. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
05.10.2013, 13:20     Сортировка времени #2
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <stdexcept>
#include <algorithm>
 
struct TTime
{
    int HH;
    int MM;
    int SS;
};
 
//-----------------------------------------------------------------------------
std::istream& operator >> (std::istream& in, TTime& time)
{
    in >> time.HH >> time.MM >> time.SS;
 
    return in;
}
//-----------------------------------------------------------------------------
std::ostream& operator << (std::ostream& out, const TTime& time)
{
    out << time.HH << " " << time.MM << " " << time.SS;
 
    return out;
}
//-----------------------------------------------------------------------------
std::ostream& operator << (std::ostream& out, const std::vector<TTime>& list)
{
    std::vector<TTime>::const_iterator it = list.begin();
 
    for (; it != list.end(); ++it)
    {
        out << *it << std::endl;
    }
 
    return out;
}
//-----------------------------------------------------------------------------
void ReadRecords(std::ifstream& f, std::vector<TTime>& list) throw(std::runtime_error)
{
    int i = list.size();
 
    TTime time;
 
    while ((f >> time) && (i-- > 0))
    {
        list[i] = time;
    }
 
    if (i > 0)
    {
        throw std::runtime_error("unexpected end of file ...");
    }
}
//-----------------------------------------------------------------------------
std::vector<TTime> GetTimeList(const std::string& fname) throw(std::runtime_error)
{
    std::ifstream f(fname.c_str());
 
    if (f.is_open() == false)
    {
        throw (std::runtime_error(fname + ": file is not open ..."));
    }
 
    int n;
 
    if ((f >> n) == NULL)
    {
        throw (std::runtime_error(fname + ": unknow format ..."));
    }
 
    if ((n < 1) || (100 < n))
    {
        throw (std::runtime_error(fname + ": count record must be [1..100] ..."));
    }
 
    std::vector<TTime> list(n);
 
    try
    {
        ReadRecords(f, list);
    }
    catch (const std::runtime_error& error)
    {
        throw (std::runtime_error(fname + ": " + error.what()));
    }
 
    return list;
}
//-----------------------------------------------------------------------------
bool TimeCompare(const TTime& a, const TTime& b)
{
    int compare = b.HH - a.HH;
 
    if (compare == 0)
    {
        compare = b.MM - a.MM;
    }
 
    if (compare == 0)
    {
        compare = b.SS - a.SS;
    }
 
    return (compare > 0);
}
//-----------------------------------------------------------------------------
 
int main(int argc, char* argv[])
{
    if (argc != 2)
    {
        std::cerr << "Usage: program <FILE>" << std::endl;
        return 1;
    }
 
    std::vector<TTime> list;
 
    try
    {
        list = GetTimeList(argv[1]);
    }
    catch (const std::runtime_error& error)
    {
        std::cerr << error.what() << std::endl;
        return 1;
    }
 
    std::sort(list.begin(), list.end(), TimeCompare);
 
    std::cout << list << std::endl;
 
    return 0;
}


Сортировка времени
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
05.10.2013, 14:12     Сортировка времени #3
Уже было. Только там в олимпиадном стиле, всё по минимуму, без проверок на ошибки.
AlisherIITU
2 / 2 / 1
Регистрация: 10.09.2013
Сообщений: 129
05.10.2013, 20:02  [ТС]     Сортировка времени #4
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
#include <iostream>
using namespace std;
 
int main ()
{
    int n;
    int **mas;
    cin >> n;
    mas = new int*[n];
    for (int i=0; i<n; i ++)
    {
        mas[i] = new int[3];
    }
 
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<3; j++)
        {
            cin >> mas[i][j];
        }
    }
    for (int i=0; i<n-1; i++)
    {
        for (int j=i; j<n; j++)
        {
            if (mas[i][0] > mas[j][0])
            {
                swap(mas[i][0], mas[j][0]);
                swap(mas[i][1], mas[j][1]);
                swap(mas[i][2], mas[j][2]);
            }
            else if (mas[i][0] == mas[j][0])
            {
                if (mas[i][1] > mas[j][1])
                {
                    swap(mas[i][0], mas[j][0]);
                    swap(mas[i][1], mas[j][1]);
                    swap(mas[i][2], mas[j][2]);
                }
                else if (mas[i][1] == mas[j][1])
                {
                    if (mas[i][2] > mas[j][2])
                    {
                        swap(mas[i][0], mas[j][0]);
                        swap(mas[i][1], mas[j][1]);
                        swap(mas[i][2], mas[j][2]);
                    }
                }
            }
        }
    }
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<3; j++)
        {
            cout << mas[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
Что обозначают в 7 и 9 строке, объясните и как можно по-другому записать более понятнее

Добавлено через 1 минуту
Цитата Сообщение от anmartex Посмотреть сообщение
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <stdexcept>
#include <algorithm>
 
struct TTime
{
    int HH;
    int MM;
    int SS;
};
 
//-----------------------------------------------------------------------------
std::istream& operator >> (std::istream& in, TTime& time)
{
    in >> time.HH >> time.MM >> time.SS;
 
    return in;
}
//-----------------------------------------------------------------------------
std::ostream& operator << (std::ostream& out, const TTime& time)
{
    out << time.HH << " " << time.MM << " " << time.SS;
 
    return out;
}
//-----------------------------------------------------------------------------
std::ostream& operator << (std::ostream& out, const std::vector<TTime>& list)
{
    std::vector<TTime>::const_iterator it = list.begin();
 
    for (; it != list.end(); ++it)
    {
        out << *it << std::endl;
    }
 
    return out;
}
//-----------------------------------------------------------------------------
void ReadRecords(std::ifstream& f, std::vector<TTime>& list) throw(std::runtime_error)
{
    int i = list.size();
 
    TTime time;
 
    while ((f >> time) && (i-- > 0))
    {
        list[i] = time;
    }
 
    if (i > 0)
    {
        throw std::runtime_error("unexpected end of file ...");
    }
}
//-----------------------------------------------------------------------------
std::vector<TTime> GetTimeList(const std::string& fname) throw(std::runtime_error)
{
    std::ifstream f(fname.c_str());
 
    if (f.is_open() == false)
    {
        throw (std::runtime_error(fname + ": file is not open ..."));
    }
 
    int n;
 
    if ((f >> n) == NULL)
    {
        throw (std::runtime_error(fname + ": unknow format ..."));
    }
 
    if ((n < 1) || (100 < n))
    {
        throw (std::runtime_error(fname + ": count record must be [1..100] ..."));
    }
 
    std::vector<TTime> list(n);
 
    try
    {
        ReadRecords(f, list);
    }
    catch (const std::runtime_error& error)
    {
        throw (std::runtime_error(fname + ": " + error.what()));
    }
 
    return list;
}
//-----------------------------------------------------------------------------
bool TimeCompare(const TTime& a, const TTime& b)
{
    int compare = b.HH - a.HH;
 
    if (compare == 0)
    {
        compare = b.MM - a.MM;
    }
 
    if (compare == 0)
    {
        compare = b.SS - a.SS;
    }
 
    return (compare > 0);
}
//-----------------------------------------------------------------------------
 
int main(int argc, char* argv[])
{
    if (argc != 2)
    {
        std::cerr << "Usage: program <FILE>" << std::endl;
        return 1;
    }
 
    std::vector<TTime> list;
 
    try
    {
        list = GetTimeList(argv[1]);
    }
    catch (const std::runtime_error& error)
    {
        std::cerr << error.what() << std::endl;
        return 1;
    }
 
    std::sort(list.begin(), list.end(), TimeCompare);
 
    std::cout << list << std::endl;
 
    return 0;
}


Вложение 313685
Спасибо тебе, но мне такой код не понятен
Yandex
Объявления
05.10.2013, 20:02     Сортировка времени
Ответ Создать тему
Опции темы

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