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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
#1

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

15.01.2012, 20:02. Просмотров 2342. Ответов 10
Метки нет (Все метки)

Язык:С++
Программа:
дана матрица mass[a][b], размер генерируется случайным образом от 2 до 10;
матрица заполняется числами от 1 до 255;
метод сортировки - пузырьком;
программа учитывает варианты четного и нечетного размера исходной матрицы;
сортировка происходит в соответствии с заданной схемой (начало пути сортировки можно выбрать и право-верхний угол - как будет проше);
Название: mat.JPG
Просмотров: 364

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

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

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

Заполнение матрицы зигзагом - C++
Здравствуйте, уже второй день пытаюсь решить вариант "Г" из этого задания. В интернете есть варианты решений, но мой уровень в знании C++...

Сортировка матрицы 5*5 - C++
Создать матрицу размером 5 на 5 ввод чисел в ручную. Вывести эту матрицу на экран, а потом отсортировать матрицу от большего к меньшему...

Сортировка матрицы - C++
Здравствуйте, я уже голову сломал, но как сделать перестановку строк по убыванию значений максимальных элементов строк. Т.е. дана матрица...

Сортировка матрицы - C++
Здравствуйте. Прошу помочь в решении. Нужно отсортировать матрицу в таком порядке: ...

Сортировка матрицы. - C++
Имеется матрица.Переставить столбцы матрицы в порядке убывания сумм элементов. SOS

Сортировка матрицы - C++
Всем привет! Прошу помощи в решении вот такой задачи: Дана матрица (N+15)x(N+15) отсортировать главную диагональ, числа генерировать...

10
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");
}
Отсортировал по пузырьку, а про твой метод лучше его загуглить
1
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
16.01.2012, 00:08  [ТС] #3
Oniablo, проверил твою программу, она сортирует строки, а мне надо отсортировать всю матрицу. Мне надо по крайней мере надо узнать, как все строки соединить, чтобы сортировалась вся матрица.
0
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
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 не вызывается(ТС оно и не нужно)
0
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
16.01.2012, 01:27  [ТС] #5
NoMasters, мне на с++ нужно
0
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
16.01.2012, 01:41 #6
И что? Покажи мне тут что-либо несобирающиеся в плюсах.
0
DavidBlaine
0 / 0 / 0
Регистрация: 13.01.2012
Сообщений: 5
16.01.2012, 10:39  [ТС] #7
просто я новичок в программировании, я С в глаза не видел, пишу только в С++. Поэтому для меня проблематично её перевести, так к тому же без библиотек и объявл. переменных
0
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
16.01.2012, 11:03 #8
DavidBlaine

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

Сортировка матрицы - C++
Товарищи, подскажите пожалуйста, как можно решить это задание? (8 б.) В начале каждой строки частично заполненной матрицы А(m,n)...

Сортировка матрицы - C++
все нулевые элементы размещены в левой части матрицы

Сортировка матрицы - C++
Как преобразовать код чтобы матрица сортировалась снизу-вверх-вправо с конца главной диагонали? void matrixToArr(int matr,int nRow,...

Сортировка матрицы - C++
Можете пожалуйста глянуть почему не идет задержка на екране вывода и условия типа Мне нужно четние елементи матрица вивести в порядку...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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