Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
TuMbI4
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 5
#1

Сортировка динамической матрицы

09.05.2012, 13:29. Просмотров 1111. Ответов 7
Метки нет (Все метки)

Написать программу сортировки динамического двумерного массива.

Общее задание:
Динамический двумерный массив (массив строк или матрица чисел - см. свой вариант задания) объявляется в виде массива указателей на одномерные массивы.
Пользователь при запуске программы вводит размерности массива (M x N): M - число строк, N - количество чисел или символов в строке (см. пример выделения и освобождения памяти для многомерных массивов). Затем пользователь заполняет массив данными (не забудьте про проверку на корректность ввода данных массива и размерностей M и N).
Затем выполняется сортировка массива заданным способом по определенному критерию (см. свой вариант задания).
На экране необходимо распечатать исходный массив и его отсортированный вариант.
Предусмотрите возможность пошагового вывода на экран при выполнении сортировки (пользователь выбирает режим в меню самостоятельно - сортировать по шагам или сразу получить результат).

Важно: При сортировке оперируйте указателями на одномерные массивы, не копируя и не переставляя элементы в одномерных массивых в памяти программы.

В программе опишите отдельные функции для:
ввода данных;
подсчета характеристики одномерного массива (критерия, по которому будет осуществляться сортировка);
сортировки двумерного массива;
вывода данных на экран.

Программа должна корректно выделять память и корректно ее освобождать после использования!

Тип данных: массив строк (пользователем задается количество строк и максимальное количество символов в строке)
Критерий сортировки: по длине (количество символов в строке), для строк равной длины - в алфавитном порядке
Алгоритм сортировки: сортировка перемешиванием (Шейкерная сортировка) (Cocktail sort)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2012, 13:29
Ответы с готовыми решениями:

Создание динамической матрицы
никак не могу понять в чем ошибка #include <stdio.h> void matrix(int n) {...

Создание динамической матрицы
float **matrix_1 = new float *; float **matrix_2 = new float *; ...

Cортировка динамической матрицы
Отсортировать каждую строку динамической матрицы по возрастанию и вывести новую...

Вычитание столбцов динамической матрицы
Дана прямоугольная матрица В размером N×M. Составить программу, которая...

Объявление и инициализация динамической матрицы
Ребят, только начал разбираться с матрицой. примерно я знаю как написать...

7
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
09.05.2012, 14:43 #2
КиберФорум- компьютерный форум начинающих и профессиональных программистов, системных администраторов, администраторов баз данных. Бесплатная помощь в решении задач по программированию, решение проблем с компьютером.

В чем нужна помощь?

что конкретно не ясно?
0
TuMbI4
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 5
09.05.2012, 14:47  [ТС] #3
Не понятно само объявление в виде массива указателей на одномерные массивы.
0
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
09.05.2012, 14:51 #4
Цитата Сообщение от TuMbI4 Посмотреть сообщение
Не понятно само объявление в виде массива указателей на одномерные массивы.


Цитата Сообщение от TuMbI4 Посмотреть сообщение
Динамический двумерный массив (массив строк или матрица чисел - см. свой вариант задания) объявляется в виде массива указателей на одномерные массивы.

выделяем память
C++
1
2
3
    int **matr = new int *[n]; // указатель на массив указ-лей;
    for (int i = 0; i < n; ++i) 
        matr[i] = new int [m];

освобождаем память

C++
1
2
3
for (int i = 0; i < n; i++)
        delete [] matr[i];
    delete [] matr;
0
antoha398
156 / 156 / 27
Регистрация: 29.03.2012
Сообщений: 418
09.05.2012, 14:51 #5
C++
1
2
3
int **mas = new int*[M];
for (int i=0; i <M; ++i)
  mas[i] = new int[N];
0
TuMbI4
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 5
09.05.2012, 15:02  [ТС] #6
А сама сортировка будет выполняться для указателя, или для обьявленого массива? Простите что туплю просто не могу понять эти указатели =(
0
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
09.05.2012, 15:04 #7
Цитата Сообщение от TuMbI4 Посмотреть сообщение
А сама сортировка будет выполняться для указателя, или для обьявленого массива?
Вы же сортируете массив

Цитата Сообщение от TuMbI4 Посмотреть сообщение
Простите что туплю просто не могу понять эти указатели =(

Массивы и указатели
1
TuMbI4
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 5
09.05.2012, 15:09  [ТС] #8
Цитата Сообщение от Infinity3000 Посмотреть сообщение

Спасибо большое. Поразбираюсь до завтра если возникнут вопросы напишу. Еще раз спасибо.
0
09.05.2012, 15:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2012, 15:09

Некорректный вывод динамической матрицы
Здравствуйте. У меня некорректно выводятся числа в динамическом двумерном...

Удаление столбцов из динамической матрицы
Здравствуйте, уважаемые форумчане! Возникла такая вот беда: Нужно из...

Передача динамической матрицы в функцию
Здравствуйте подскажите пожалуйста, как можно передать динамическую матрицу,...


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

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

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