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

Упорядочить массив - C++

Восстановить пароль Регистрация
 
victim_666
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 36
23.11.2012, 22:47     Упорядочить массив #1
дан массив, у примеру:
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

сделать нужно так:
1 2 3 4 5
18 6 7 8 22
19 20 9 23 24
21 10 11 12 25
13 14 15 16 17

Помогите, как его так отсортировать.немогу никак((
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
23.11.2012, 22:50     Упорядочить массив #2
Цитата Сообщение от victim_666 Посмотреть сообщение
1 2 3 4 5
18 6 7 8 22
19 20 9 23 24
21 10 11 12 25
13 14 15 16 17
(
по каким параметрам он отсортирован?
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
23.11.2012, 22:50     Упорядочить массив #3
Наверное не массив, а матрица, что это за принцип сортировки?
victim_666
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 36
23.11.2012, 22:51  [ТС]     Упорядочить массив #4
Цитата Сообщение от David Sylva Посмотреть сообщение
Наверное не массив, а матрица, что это за принцип сортировки?
да, матрица.не знаю как принцип называется, нам препод нарисовал на доске, сказал сделать по этому принципу.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
23.11.2012, 23:01     Упорядочить массив #5
Цитата Сообщение от victim_666 Посмотреть сообщение
да, матрица.не знаю как принцип называется, нам препод нарисовал на доске, сказал сделать по этому принципу.
А как же мы тебе поможем, если мы не знаем по какому принципу сортировать.
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
23.11.2012, 23:02     Упорядочить массив #6
может так?
из такого

1 2 3 4 5
18 6 7 8 22
19 20 9 23 24
21 10 11 12 25
13 14 15 16 17

получить такой?
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
victim_666
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 36
23.11.2012, 23:06  [ТС]     Упорядочить массив #7
Цитата Сообщение от David Sylva Посмотреть сообщение
А как же мы тебе поможем, если мы не знаем по какому принципу сортировать.
ну если матрица 5*5, то сначала заполняется полностью первая строка, во второй строке убираются крайние и т.д., пока не останется один элемент, после в том же порядке, только крайние элементы прибавляются.после заполняются края.
Как я вижу решение:
1 шаг) 1 2 3 4 5
6 7 8
9
2) 1 2 3 4 5
6 7 8
9
10 11 12
13 14 15 16 17
В третьем дополнить края
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,874
Записей в блоге: 2
Завершенные тесты: 1
23.11.2012, 23:10     Упорядочить массив #8
Название: Безымянный.jpg
Просмотров: 36

Размер: 26.5 Кб
victim_666
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 36
23.11.2012, 23:10  [ТС]     Упорядочить массив #9
Цитата Сообщение от Croessmah Посмотреть сообщение
да да да!!!
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,874
Записей в блоге: 2
Завершенные тесты: 1
24.11.2012, 00:07     Упорядочить массив #10
Первое, что пришло в голову. Убого, но работает для квадратных матриц:
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
#include <cstdlib>
#include <iostream>
 
int main()
{
 
    const int size=5;
    int arr[size][size];
    memset(arr,0,size*size*sizeof(arr[0][0]));
 
 
 
    int num=1;
    int f=0;
    bool bFlag;
    for(int j=0;j<size;++j){
        bFlag=j>=(size/2);
        for(int i=(bFlag?(size-j-1):j);i<(bFlag?j+1:size-j);++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        bFlag=j>=(size/2);
        for(int i=0;i<(bFlag?size-j-1:j);++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        bFlag=j>=(size/2);
        for(int i=size-(bFlag?size-j-1:j);i<size;++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        for(int i=0;i<size;++i){
            std::cout.width(4);
            std::cout<<arr[i][j];
        }
        std::cout<<std::endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
victim_666
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 36
24.11.2012, 00:10  [ТС]     Упорядочить массив #11
Цитата Сообщение от Croessmah Посмотреть сообщение
Первое, что пришло в голову. Убого, но работает для квадратных матриц:
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
#include <cstdlib>
#include <iostream>
 
int main()
{
 
    const int size=5;
    int arr[size][size];
    memset(arr,0,size*size*sizeof(arr[0][0]));
 
 
 
    int num=1;
    int f=0;
    bool bFlag;
    for(int j=0;j<size;++j){
        bFlag=j>=(size/2);
        for(int i=(bFlag?(size-j-1):j);i<(bFlag?j+1:size-j);++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        bFlag=j>=(size/2);
        for(int i=0;i<(bFlag?size-j-1:j);++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        bFlag=j>=(size/2);
        for(int i=size-(bFlag?size-j-1:j);i<size;++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        for(int i=0;i<size;++i){
            std::cout.width(4);
            std::cout<<arr[i][j];
        }
        std::cout<<std::endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
спасибо бро!!!только врятле мне поверят, что это я сделал.щас буду думать, как под себя код переделать)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2012, 00:29     Упорядочить массив
Еще ссылки по теме:

Структуры. Дан массив записей, содержащих дату и время. Упорядочить этот массив в порядке «возрастания» C++
Дан двумерный массив. Упорядочить элементы каждой строки массива; сформировать одномерный массив из элементов главной диагонали упорядоченного массива C++
C++ Из двух целочисленных массивов различной размерности сформировать общий массив. Упорядочить полученный массив

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11820 / 6799 / 769
Регистрация: 27.09.2012
Сообщений: 16,874
Записей в блоге: 2
Завершенные тесты: 1
24.11.2012, 00:29     Упорядочить массив #12
Цитата Сообщение от victim_666 Посмотреть сообщение
только врятле мне поверят, что это я сделал.щас буду думать, как под себя код переделать)
Тогда вариант попроще, только по другому будет работать, для матриц с четным размером(size), для нечетных так же
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
#include <cstdlib>
#include <iostream>
 
int main()
{
 
    const int size=5;
    int arr[size][size];
    int ds=size/2;
    int num=1;
    for(int j=0;j<size;++j){
        for(int i=ds-abs(ds-j);i<size-(ds-abs(ds-j));++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        for(int i=0;i<ds-abs(ds-j);++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        for(int i=size-(ds-abs(ds-j));i<size;++i,++num){
            arr[i][j]=num;
        }
    }
    for(int j=0;j<size;++j){
        for(int i=0;i<size;++i){
            std::cout.width(5);
            std::cout<<arr[i][j];
        }
        std::cout<<std::endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
Yandex
Объявления
24.11.2012, 00:29     Упорядочить массив
Ответ Создать тему
Опции темы

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