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

Сортировка массива [C++] - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Ntsket
 Аватар для Ntsket
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 19
20.11.2010, 01:02     Сортировка массива [C++] #1
Доброго времени суток, уважаемые. Не получается сделать сортировку массива, а именно: необходимо сделать сортировку каждого из 3х столбцов в порядке убывания элементов. Метод сортировки неважен. Заранее благодарю.
ps. если не сложно, не отказался бы от комментариев в коде, чтобы понять что происходит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include "math.h"
#include <iostream>
 
int main(void)
{
    int t, i, num[20] [3];
 
    for(t=0; t<20; ++t)
        for(i=0; i<3; ++i)
            num[t] [i] = rand()%10000 - 5000;
 
    for(t=0; t<20; ++t)
    {
        for(i=0; i<3; ++i)
            printf("%3d ", num[t] [i]);
        printf("\n");
        }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2010, 01:02     Сортировка массива [C++]
Посмотрите здесь:

C++ Сортировка массива
C++ Сортировка массива
Указатели массива и сортировка массива C++
сортировка массива C++
C++ Сортировка массива, вместо массива выводит мусор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.11.2010, 01:15     Сортировка массива [C++] #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
#include "stdafx.h"
#include "math.h"
#include <iostream>
 
int main(void)
{
        int t, i, num[20] [3];
 
        for(t=0; t<20; ++t)
                for(i=0; i<3; ++i)
                        num[t][i] = rand()%10000 - 5000;
 
        for(t=0; t<20; ++t)
        {
                for(i=0; i<3; ++i)
                        printf("%3d ", num[t][i]);
                printf("\n");
                }
        int j, temp_i, temp;
for(j=0; j<3; j++)
{
    for(i=0; i<20; i++)
    {
        temp_i=i;
        for(t=i+1; t<20; t++)
            if(num[t][j]>num[temp_i][j])
                temp_i=t;
        temp=num[i][j]; num[i][j]=num[temp_i][j]; num[temp_i][j]=temp;
    }
}
printf("\n\n");
 
        for(t=0; t<20; ++t)
        {
                for(i=0; i<3; ++i)
                        printf("%3d ", num[t] [i]);
                printf("\n");
                }    
 
        return 0;
}
Ntsket
 Аватар для Ntsket
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 19
20.11.2010, 01:29  [ТС]     Сортировка массива [C++] #3
valeriikozlov,
Огромное спасибо, вот только небольшой вопросик: правильно ли, что в результате выводится не только отсортированный массив, но и не отсортированный и можно ли этого как нибудь избежать?
Миниатюры
Сортировка массива [C++]  
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.11.2010, 01:39     Сортировка массива [C++] #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
#include "stdafx.h"
#include "math.h"
#include <iostream>
 
int main(void)
{
        int t, i, num[20] [3];
 
        for(t=0; t<20; ++t)
                for(i=0; i<3; ++i)
                        num[t][i] = rand()%10000 - 5000;
 
        for(t=0; t<20; ++t)// начиная с этой строки
        {
                for(i=0; i<3; ++i)
                        printf("%3d ", num[t][i]);
                printf("\n");
                }// и кончая этой строкой выводится на экран неотсортированный (первоначальный массив)
                int j, temp_i, temp;
for(j=0; j<3; j++)
{
        for(i=0; i<20; i++)
        {
                temp_i=i;
                for(t=i+1; t<20; t++)
                        if(num[t][j]>num[temp_i][j])
                                temp_i=t;
                temp=num[i][j]; num[i][j]=num[temp_i][j]; num[temp_i][j]=temp;
        }
}
printf("\n\n");
 
        for(t=0; t<20; ++t)// начиная этой строкой
        {
                for(i=0; i<3; ++i)
                        printf("%3d ", num[t] [i]);
                printf("\n");
                }    // и кончая этой строкой массив выводится уже отсортированный 
 
        return 0;
}
Если Вы хотите убрать вывод неотсортированного массива, то можете просто удалить или закоментировать часть кода которая выводит неотсортированный массив.
Ntsket
 Аватар для Ntsket
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 19
20.11.2010, 01:44  [ТС]     Сортировка массива [C++] #5
Спасибо, прошу прощения, не подумал, теперь все понятно.
Yandex
Объявления
20.11.2010, 01:44     Сортировка массива [C++]
Ответ Создать тему
Опции темы

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