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

Сортировка двумерного массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 18:21     Сортировка двумерного массива #1
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
07.10.2012, 18:21     Сортировка двумерного массива
Посмотрите здесь:

Сортировка двумерного массива C++
Сортировка Двумерного массива C++
C++ Сортировка двумерного массива
сортировка двумерного массива C++
Сортировка двумерного массива... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
07.10.2012, 18:31     Сортировка двумерного массива #2
Это надо сначала угадать, по какому критерию сортировать? Замечательно...
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 21:36  [ТС]     Сортировка двумерного массива #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.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
07.10.2012, 22:10     Сортировка двумерного массива #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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <tuple>
#include <vector>
 
using namespace std;
 
class Time : public tuple<int, int, int>
{
 
};
 
istream& operator>> (istream& stream, Time& value)
{
    return stream >> get<0>(value) >> get<1>(value) >> get<2>(value);
}
 
ostream& operator<< (ostream& stream, const Time& value)
{
    return stream << get<0>(value) << ' ' << get<1>(value) << ' ' <<  get<2>(value);
}
 
int main()
{
    size_t n;
    cin >> n;
    vector<Time> v;
    copy_n(istream_iterator<Time>(cin), n, back_inserter(v));
    sort(v.begin(), v.end());
    copy(v.cbegin(), v.cend(), ostream_iterator<Time>(cout, "\n"));
}
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 22:42  [ТС]     Сортировка двумерного массива #5
а попроще никак???

Добавлено через 11 минут
мы 5 недель всего проходим
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
07.10.2012, 23:03     Сортировка двумерного массива #6
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
#include <iostream>
 
using namespace std;
 
struct Time
{
    int h, m, s;
};
 
int main()
{
    unsigned n;
    cin >> n;
    Time a[101];
    for (unsigned i = 0; i < n; i++)
        cin >> a[i].h >> a[i].m >> a[i].s;
    /*
    Тут сортировка с условием типа
    a[i].h < a[j].h || a[i].h == a[j].h &&
    (a[i].m < a[j].m || a[i].m == a[j].m && a[i].s < a[j].s)
    */
    for (unsigned i = 0; i < n; i++)
        cout << a[i].h << ' ' << a[i].m << ' ' << a[i].s << '\n';
}
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
07.10.2012, 23:31     Сортировка двумерного массива #7
Ну если совсем просто так:
используешь пузырьковую сортировку только для i индексов, если у тебя часы равны, то сравниваешь минуты, если у тебя и часы и минуты равны то сравниваешь секунды, если нет, то меняешь всю строку. Напоминаю, за строку у нас отвечает i.

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;
}
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
08.10.2012, 00:07  [ТС]     Сортировка двумерного массива #8
вот я именно таким способом сам уже и решил, просто этот контестер на сайте выдает тупую INTERNAL ERROR а в меню справки такого вида ошибок и нету..((
И еще вот задача, я ее решил на DEV C++ моем пашет а вот на сайте контестера нет((
выдает Compilation Error
Вот код и лог с сайта
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
#include <iostream>
using namespace std;
int main () {
int a[1000],i,j,n,tc,max1,max2;
cin>>n;
for (i=0; i<=(n-1); i++)
    cin>>a[i];
for (j=0; j<=n-2; j++)
    for (i=0; i<=n-2; i++) 
        if (a[i]>a[i+1]) {
           tc=a[i];
           a[i]=a[i+1];
           a[i+1]=tc;
        } 
max1=a[n]*a[n-1]*a[n-2];
max2=a[1]*a[2]*a[n];
if (max1>max2)
cout<<a[n-1]<<' '<<a[n-2]<<' '<<a[n-3]<<endl;
else
cout<<a[n-1]<<' '<<a[0]<<' '<<a[1]<<endl;
return 0;
}
 
        ---------- compiler_stdout.txt ----------
 
---------- compiler_stderr.txt ----------
Solution.cpp:22:2: warning: no newline at end of file
collect2: installation problem, cannot exec `C:\compilers\cpp\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe': Invalid argument
 
---------- linker_stdout.txt ----------
 
---------- linker_stderr.txt ----------
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
08.10.2012, 00:35     Сортировка двумерного массива #9
а про что последняя задача?? конестер это contester.iitu.kz? или что в этом вроде?
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
08.10.2012, 15:54  [ТС]     Сортировка двумерного массива #10
Цитата Сообщение от jambas92 Посмотреть сообщение
а про что последняя задача?? конестер это contester.iitu.kz? или что в этом вроде?
дада именно в этом роде)

Добавлено через 4 минуты
Given N integers. You need to choose three of them such numbers whose product is maximum.

Input format:
First line - N integer
Then the sequence of numbers (3<=N<=100).
Any number from the sequence is not bigger that 1000 by it's absolute value.

Output format:
Output 3 numbers whoose multiplication will be the largest.
If more that one variant exists,output any of them.

Sample input 1:
9
3 5 1 7 9 0 9 -3 10

Sample output 1:
9 10 9

Sample input 2:
3
-5 -300 -12

Sample output 2:
-5 -300 -12
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
08.10.2012, 17:20     Сортировка двумерного массива #11
просто отсортируй массив и выведи последние три элемента...
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
#include <iostream>
using namespace std;
int main()
{
    int mas[100];
    int n;
    cin >> n;
 
    for (int i=0; i<n; i++)
        cin >> mas[i];
    for (int i=0; i<n-1; i++)
    {
        for (int j=i; j<n; j++)
        {
            if (mas[i] > mas[j])
            {
                swap(mas[i], mas[j]);
            }
        }
    }
    for (int i=n-1; i>n-4; i--)
    {
        cout << mas[i] << " ";
    }
}
а контестер он нормальный! я там все задачи решал и все проходило, конечно 2 года назад...
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
08.10.2012, 18:14     Сортировка двумерного массива #12
Цитата Сообщение от jambas92 Посмотреть сообщение
просто отсортируй массив и выведи последние три элемента...
Да ну?
-100 -100 10 10 10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2012, 18:19     Сортировка двумерного массива
Еще ссылки по теме:

C++ сортировка двумерного массива
C++ Сортировка двумерного массива
сортировка двумерного массива C++

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

Или воспользуйтесь поиском по форуму:
ilyasfromkz
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
08.10.2012, 18:19  [ТС]     Сортировка двумерного массива #13
фу блин да написал я уже прогу!!! она сортирует потом берет первые два элемента и один последний(на случай если там отрицательные числа большие) их перемножает, и сравнивает результат с перемножением последних трех элементво (где только положительные) и потом выводит просто она находит какюто ошибку, кароче я завтра к училке насчет этого подойду, и перебор я тоже сам написал и опять же непонятная ошибка не от того что код не правильный а чтото с самим контестером никак ведь все те самые же тесты на DEV-C++ проходит он на раз-два

Добавлено через 52 секунды
две последние задачи написаны но робят, просто deadline завтра, а седня прогулял весь день((
Yandex
Объявления
08.10.2012, 18:19     Сортировка двумерного массива
Ответ Создать тему
Опции темы

Текущее время: 17:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru