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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.80
Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333
#1

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

30.03.2011, 18:28. Просмотров 3339. Ответов 12
Метки нет (Все метки)

Требуется выполнить сортировку временных моментов, заданных в часах, минутах и секундах.
Входные данные

Во входном файле INPUT.TXT в первой строке записано число N (1<=N<=100), а в последующих N строках N моментов времени. Каждый момент времени задается 3 целыми числами - часы (от 0 до 23), минуты (от 0 до 59) и секунды (от 0 до 59).
Выходные данные

В выходной файл OUTPUT.TXT выведите моменты времени, упорядоченные в порядке неубывания без ведущих нулей.
Пример:
INPUT.TXT
4
10 20 30
7 30 00
23 59 59
13 30 30
OUTPUT.TXT
7 30 0
10 20 30
13 30 30
23 59 59
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2011, 18:28     Сортировка времени.
Посмотрите здесь:

Сортировка времени - C++
Time sorting From input your program have to read N (1&lt;=N&lt;=100) - the total number of time interval than have to be sorted. Each line...

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

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

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

Генерация и сортировка времени - 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
есть дата день, месяц, год час, минута, секунда, нужно отсортировать в обратно порядке

Сортировка изображений по дате и времени - PHP
Возможно ли реализовать сортировку загруженных изображений (form / input type file / php) по дате и времени без БД?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
30.03.2011, 19:18     Сортировка времени. #2
а в чем проблема? сосчитать для каждого случая количество секунд, прошедшее с 00-00. отсортировать.
Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333
30.03.2011, 20:00  [ТС]     Сортировка времени. #3
А как потом выводить?

Добавлено через 35 минут
Я думаю через матрицу, а потом сортировать столбцы...но Я не могу сделать что бы строки были динамичные(через указатель), а колонки константа в данном случае 3, но не получается ошибки пишет.

Добавлено через 2 минуты
no0ker, Я не могу понять как Вы хотите...
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
30.03.2011, 20:19     Сортировка времени. #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
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
class t{
    public:
        t (int hh, int mm, int ss){ // конструктор
            h = hh;
            m = mm;
            s = ss;
        }
        void show(){
            cout<<h<<":"<<m<<":"<<s<<endl; // вывод времени
        }
        int abs(){
            return 60*60*h + 60*m + s; // кол во секунд с 00-00
        }
    private:
        int h, m, s;
};
 
bool compare(t a, t b){ // функция сравнения двух t
    return b.abs() > a.abs();
}
 
 
int main(){
    t a(10,20,30);
    t b(7,30,00);
    t c(23,59,59);
 
    vector<t> in;
    vector<t>::iterator in_i;
 
    in.push_back(a);
    in.push_back(b);
    in.push_back(c);
 
    // до сортировки
    for (in_i=in.begin(); in_i!=in.end(); ++in_i){
        (*in_i).show();
    }
    
    // сортировка
    sort( in.begin(), in.end(), compare);
 
    // после сортировки
    for (in_i=in.begin(); in_i!=in.end(); ++in_i){
        (*in_i).show();
    }
 
    return 0;
}
Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333
30.03.2011, 20:21  [ТС]     Сортировка времени. #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
const int column = 3;
 
int main() {
    int *arr;
    int row;
    std::cin >> row;
    arr = new int[row];
    for(int i = 0; i < row; i++) {
        for(int j = 0; j < column; j++) {
            std::cin >> arr[i][j];
            std::cout << arr[i][j];
        }
    }
    return 0;
}
почему так нельзя?

Добавлено через 1 минуту
error C2109: subscript requires array or pointer type
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
30.03.2011, 20:25     Сортировка времени. #6
через матрицы... что то сложновато для меня. =(

Добавлено через 37 секунд
если только делать три колонки - час мин сек - а четвертую колонку - секунды с начала суток. но как их потом сортировать...
iama
30.03.2011, 20:26
  #7

Не по теме:

а задачка-то с acmp

Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333
30.03.2011, 20:27  [ТС]     Сортировка времени. #8
no0ker, Я Ваш пример не понял вообще много непонятного с векторами пока трудно)))
ага отуда)
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
30.03.2011, 22:20     Сортировка времени. #9
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
/////////////////////////////////////////////////////////////////////////////////////////
//Требуется выполнить сортировку временных моментов, заданных в часах, минутах и секундах.
//Входные данные
//
//Во входном файле INPUT.TXT в первой строке записано число N (1<=N<=100), а в последующих 
//N строках N моментов времени. Каждый момент времени задается 3 целыми числами - 
//часы (от 0 до 23), минуты (от 0 до 59) и секунды (от 0 до 59).
//Выходные данные
//
//В выходной файл OUTPUT.TXT выведите моменты времени, упорядоченные в порядке неубывания 
//без ведущих нулей.
//Пример:
//INPUT.TXT
//4
//10 20 30
//7 30 00
//23 59 59
//13 30 30
//OUTPUT.TXT
//7 30 0
//10 20 30
//13 30 30
//23 59 59 
/////////////////////////////////////////////////////////////////////////////////////////
#include <fstream>
#include <iostream>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_time
{
    int  h_;
    int  m_;
    int  s_;
    //-----------------------------------------------------------------------------------
    T_time
        (
            int h = 0, 
            int m = 0, 
            int s = 0
        )
        : h_(h),
          m_(m),
          s_(s)
    {}
    //-----------------------------------------------------------------------------------
    operator int() const
    {
        const int  S_PER_MIN = 60;
        return  (s_ * S_PER_MIN + m_) * S_PER_MIN + h_;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string            T_str;
typedef std::multiset<T_time>  T_times;
/////////////////////////////////////////////////////////////////////////////////////////
std::istream&  operator>> (std::istream&  is, T_time&  t)
{
    is >> t.h_;
    is >> t.m_;
    is >> t.s_;    
    return  is;
}
/////////////////////////////////////////////////////////////////////////////////////////
std::ostream& operator<<(std::ostream& os, const T_time&  t)
{
    os << t.h_
       << ' '
       << t.m_
       << ' '
       << t.s_;       
    return  os;
}
/////////////////////////////////////////////////////////////////////////////////////////
std::istream&  operator>> (std::istream&  is, T_times&  times)
{
    size_t  times_total = 0;
    is >> times_total;
    is.ignore();
        
    for(size_t  i = 0; i < times_total; ++i)
    {
        T_time   time;    
        is >> time;
        is.ignore();
        times.insert(time);
    }
    return  is;
}
/////////////////////////////////////////////////////////////////////////////////////////
std::ostream& operator<<(std::ostream& os, const T_times&  times)
{
    os << times.size()
       << std::endl;
 
    for(T_times::const_iterator  time_it = times.begin();
        time_it != times.end(); ++time_it)
    {
        os << *time_it
           << std::endl;
    }
    return  os;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    const T_str  INPUT_FILE_NAME   = "INPUT.TXT";
    const T_str  OUTPUT_FILE_NAME  = "OUTPUT.TXT";
 
    std::ofstream  o_ifile(INPUT_FILE_NAME.c_str());
    o_ifile << "4"
            << std::endl
            << "10 20 30"
            << std::endl
            << "7 30 00"
            << std::endl
            << "23 59 59"
            << std::endl
            << "13 30 30"
            << std::endl;
 
    std::ifstream  i_ifile(INPUT_FILE_NAME.c_str());
    T_times  times;
    i_ifile >> times;
    
    std::ofstream  o_ofile(OUTPUT_FILE_NAME.c_str());
    o_ofile << times;
    
    std::ifstream  i_ofile(OUTPUT_FILE_NAME.c_str());
    std::cout << "Содержимое файла "
              << OUTPUT_FILE_NAME
              << ":"
              << std::endl
              << i_ofile.rdbuf();
}
no0ker
31.03.2011, 15:30
  #10

Не по теме:

интересно, смогу ли я когда нибудь читать и понимать код Mr.X =(

KuKu
31.03.2011, 15:55
  #11

Не по теме:

имхо, у него просто довольно специфическое понимание красоты кода, читабельности и его компактности)

Temirlan90
132 / 132 / 8
Регистрация: 30.09.2010
Сообщений: 333
31.03.2011, 19:01  [ТС]     Сортировка времени. #12
Mr.X, не совсем корректно Ваше решение...
INPUT.TXT
4
11 0 0
9 01 00
23 59 59
13 30 30
OUTPUT.TXT
4
11 0 0
9 1 0
13 30 30
23 59 59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2011, 20:34     Сортировка времени.
Еще ссылки по теме:

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

сортировка по времени в bat/cmd - CMD/BAT
сабж в папке А лежит bat, который в папке Б сортирует все файлы по времени и оставляет только 10 самых свежих спасибо заранее

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

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

Сортировка списка файлов по времени, по имени - C#
Здравствуйте! есть папка с файлами: Файлы - это массивы снимаемые с прибора (потом дальше пойдут в обработку, соответственно надо...


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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
31.03.2011, 20:34     Сортировка времени. #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
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
/////////////////////////////////////////////////////////////////////////////////////////
//Требуется выполнить сортировку временных моментов, заданных в часах, минутах и секундах.
//Входные данные
//
//Во входном файле INPUT.TXT в первой строке записано число N (1<=N<=100), а в последующих 
//N строках N моментов времени. Каждый момент времени задается 3 целыми числами - 
//часы (от 0 до 23), минуты (от 0 до 59) и секунды (от 0 до 59).
//Выходные данные
//
//В выходной файл OUTPUT.TXT выведите моменты времени, упорядоченные в порядке неубывания 
//без ведущих нулей.
//Пример:
//INPUT.TXT
//4
//10 20 30
//7 30 00
//23 59 59
//13 30 30
//OUTPUT.TXT
//7 30 0
//10 20 30
//13 30 30
//23 59 59 
/////////////////////////////////////////////////////////////////////////////////////////
#include <fstream>
#include <iostream>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_time
{
    int  h_;
    int  m_;
    int  s_;
    //-----------------------------------------------------------------------------------
    T_time
        (
            int h = 0, 
            int m = 0, 
            int s = 0
        )
        : h_(h),
          m_(m),
          s_(s)
    {}
    //-----------------------------------------------------------------------------------
    operator int() const
    {
        const int  S_PER_MIN = 60;
        return  (h_ * S_PER_MIN + m_) * S_PER_MIN + s_;        
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string            T_str;
typedef std::multiset<T_time>  T_times;
/////////////////////////////////////////////////////////////////////////////////////////
std::istream&  operator>> (std::istream&  is, T_time&  t)
{
    is >> t.h_;
    is >> t.m_;
    is >> t.s_;    
    return  is;
}
/////////////////////////////////////////////////////////////////////////////////////////
std::ostream& operator<<(std::ostream& os, const T_time&  t)
{
    os << t.h_
       << ' '
       << t.m_
       << ' '
       << t.s_;       
    return  os;
}
/////////////////////////////////////////////////////////////////////////////////////////
std::istream&  operator>> (std::istream&  is, T_times&  times)
{
    size_t  times_total = 0;
    is >> times_total;
    is.ignore();
        
    for(size_t  i = 0; i < times_total; ++i)
    {
        T_time   time;    
        is >> time;
        is.ignore();
        times.insert(time);
    }
    return  is;
}
/////////////////////////////////////////////////////////////////////////////////////////
std::ostream& operator<<(std::ostream& os, const T_times&  times)
{
    os << times.size()
       << std::endl;    
    
    for(T_times::const_iterator  time_it = times.begin();
        time_it != times.end(); ++time_it)
    {       
        os << *time_it
           << std::endl;
    }
    return  os;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    const T_str  INPUT_FILE_NAME   = "INPUT.TXT";
    const T_str  OUTPUT_FILE_NAME  = "OUTPUT.TXT";
 
    std::ofstream  o_ifile(INPUT_FILE_NAME.c_str());
    
    o_ifile << "4"
            << std::endl
            << "11 0 0"
            << std::endl
            << "9 01 00"
            << std::endl
            << "23 59 59"
            << std::endl
            << "13 30 30"
            << std::endl;   
 
    std::ifstream  i_ifile(INPUT_FILE_NAME.c_str());
    T_times  times;
    i_ifile >> times;
    
    std::ofstream  o_ofile(OUTPUT_FILE_NAME.c_str());
    o_ofile << times;
    
    std::ifstream  i_ofile(OUTPUT_FILE_NAME.c_str());
    std::cout << "Содержимое файла "
              << OUTPUT_FILE_NAME
              << ":"
              << std::endl
              << i_ofile.rdbuf();
}
Yandex
Объявления
31.03.2011, 20:34     Сортировка времени.
Ответ Создать тему
Опции темы

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