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

Сортировка матрицы зигзагом - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
15.01.2012, 20:02     Сортировка матрицы зигзагом #1
Язык:С++
Программа:
дана матрица mass[a][b], размер генерируется случайным образом от 2 до 10;
матрица заполняется числами от 1 до 255;
метод сортировки - пузырьком;
программа учитывает варианты четного и нечетного размера исходной матрицы;
сортировка происходит в соответствии с заданной схемой (начало пути сортировки можно выбрать и право-верхний угол - как будет проше);
Название: mat.JPG
Просмотров: 360

Размер: 10.6 Кб
программа выводит на экран исходную матрицу, ниже через строку отсортированную.

P.S. Матрицу написал, случ. числами заполняется, сама проблема в сортировке зигзагом - её надо написать с помощью циклов и условий учитывая, что матрица может быть как квадратной, так и прямоугольной

Приму любую помощь. Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2012, 20:02     Сортировка матрицы зигзагом
Посмотрите здесь:

сортировка матрицы C++
C++ Сортировка матрицы С++
C++ сортировка матрицы
сортировка матрицы C++
C++ Сортировка матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Oniablo
1 / 1 / 0
Регистрация: 26.12.2011
Сообщений: 10
15.01.2012, 23:04     Сортировка матрицы зигзагом #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
#include <iostream>
#include <string>
using namespace std;
const int a=5, b=5;
 
void main () {
    int mass[a][b];     // объявление массива 5х5
for (int i=0; i<a; i++)
    for (int j=0; j<a; j++)
    {{
        mass[i][j]=1+rand()%256; // заполнение массива
    }}
 
    for (int i=0; i<a; i++)
    for (int j=0; j<a; j++)
    {{
        if (mass[i][j]>mass[i][j+1])
        {
            int b= mass[i][j+1];
            mass[i][j+1]=mass[i][j]; // сортировка пузырьком
            mass[i][j]=b;
        }
        }}
    system ("Pause");
}
Отсортировал по пузырьку, а про твой метод лучше его загуглить
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
16.01.2012, 00:08  [ТС]     Сортировка матрицы зигзагом #3
Oniablo, проверил твою программу, она сортирует строки, а мне надо отсортировать всю матрицу. Мне надо по крайней мере надо узнать, как все строки соединить, чтобы сортировалась вся матрица.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
16.01.2012, 00:50     Сортировка матрицы зигзагом #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
    i = 0;
    j = 0;
    do
    {
        switch(way = way % 4)
        {
            case 0:
                if(i != a)
                    i++;
                else
                    j++;
                way++;
                break;
            case 1:
                i--;
                j++;
                if(i == 0 || j == b)
                    way++;
                break;
            case 2:
                if(j != b)
                    j++;
                else
                    i++;
                way++;
                break;
            case 3:
                i++;
                j--;
                if(j == 0 || i == a)
                    way++;
                break;
        }
    do_some(arr, i, j);
    }while(i != a || j != b);
При этом в a и b вертикальная/горизонтальная размерность - 1.

Добавлено через 2 минуты
Обращаю внимание на то, что для элемента (0, 0) do_some не вызывается(ТС оно и не нужно)
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
16.01.2012, 01:27  [ТС]     Сортировка матрицы зигзагом #5
NoMasters, мне на с++ нужно
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
16.01.2012, 01:41     Сортировка матрицы зигзагом #6
И что? Покажи мне тут что-либо несобирающиеся в плюсах.
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
16.01.2012, 10:39  [ТС]     Сортировка матрицы зигзагом #7
просто я новичок в программировании, я С в глаза не видел, пишу только в С++. Поэтому для меня проблематично её перевести, так к тому же без библиотек и объявл. переменных
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
16.01.2012, 11:03     Сортировка матрицы зигзагом #8
DavidBlaine

Данный псевдокод работает и на С++, ибо отличий между С и С++ не так много. Главное книги/маны читать
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
16.01.2012, 16:06     Сортировка матрицы зигзагом #9
Цитата Сообщение от Арсенал Посмотреть сообщение
псевдокод
Вполне себе кусок рабочего кода, только объявления опущены.
Забыл добавить, что перед начало обхода в way тоже должен быть нуль.
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
16.01.2012, 22:16  [ТС]     Сортировка матрицы зигзагом #10
что делает функция do_some?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2012, 00:38     Сортировка матрицы зигзагом
Еще ссылки по теме:

Заполнение матрицы зигзагом C++
C++ Сортировка матрицы
Сортировка матрицы C++

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

Или воспользуйтесь поиском по форуму:
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
17.01.2012, 00:38     Сортировка матрицы зигзагом #11
У тебя должна менять по необходимости очередной элемент с предыдущим. Индексы предыдущей ячейки советую запоминать во имя отсутствия лишней мороки.
Yandex
Объявления
17.01.2012, 00:38     Сортировка матрицы зигзагом
Ответ Создать тему
Опции темы

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