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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Fengtu
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 9
#1

Функция сортировки двумерного массива - C++

18.12.2012, 19:00. Просмотров 1554. Ответов 3
Метки нет (Все метки)

необходимо написать функцию сортирующую двумерный массив.
за основу взял сортировку при помощи указателей типа:
C++
1
2
3
4
    for (int g=0; g<n*m; g++)
        for (int p=0; p<(n*m-1); p++)
            if ( *(*arr+p)>*(*arr+p+1) )
                swap( *(*arr+p),*(*arr+p+1) );
которую и попытался запихнуть в функцию:

C++
1
2
3
4
5
6
7
void sort(int *, int); // прототип
 
void sort(int *mas, int dlin) // функция
{   for(int i=0; i<dlin; i++)
        for(int j=0; j<dlin-1; j++)
            if ( *(*mas+j)>*(*mas+j+1) ) swap( *(*mas+j),*(*mas+j+1) );
}
VS Выдает ошибку: "операнд * должен быть указателем. Подскажите плз, в чем дело и как править?


Кликните здесь для просмотра всего текста

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
#include <iostream>
 
using namespace std;
const int n=4, m=5;
 
void disp(int [][m], int);
void sort(int *, int);
 
void main()
{   int mat[n][m]={0};
 
    for (int i=0; i<n*m; i++)
        *(*mat+i)=0+rand()%9;
 
    disp(mat,m);
    cout<<endl<<endl;
    sort(*mat, n*m);
    cout<<endl<<endl;
    disp(mat,m);
 
    system("pause");
}
 
void disp(int mas[][m], int dlin)
{   for( int i=0; i<n; i++)
    {   for(int j=0; j<m; j++)
            cout<<mas[i][j]<<" ";
        cout<<endl;
    }
}
 
void sort(int *mas, int dlin)
{   for(int i=0; i<dlin; i++)
        for(int j=0; j<dlin-1; j++)
            if ( *(*mas+j)>*(*mas+j+1) ) swap( *(*mas+j),*(*mas+j+1) );
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 19:00     Функция сортировки двумерного массива
Посмотрите здесь:

Шаблонная функция сортировки двумерного массива - C++
Помогите пожалуйста написать шаблонную функцию сортировки двумерного массива (матрицы) любым методом. Пробовал пузырьком, компилятор не...

Не корректное выполнение сортировки двумерного массива - C++
Приветствую всех. Помогите найти и исправить причину не корректной работы программы. Примечание: я еще новичок и решаю задачки на самом...

Исправить код для сортировки двумерного массива - C++
Здравствуйте! Укажите пожалуйста на мою ошибку. Нужно через быструю сортировку отсортировать двумерный массив, но что бы сортировались...

Ошибки в программе сортировки Хоара двумерного массива в С++ - C++
Составила программу на языке С++, создающую двумерный целочисленный массив и сортирующую его по строкам по методу Хоара. Программа не...

Написать функцию сортировки двумерного массива, содержащего имена людей - C++
Задание: Дан двумерный строковый массив, содержащий имена людей (Boris, Vladimir, Anna, Petr). Написать функцию сортировки двумерного...

Функция сортировки массива - C++
Дан массив целых чисел. Напишите функцию, которая получает данный массив в качестве аргумента и сортирует его по возрастанию, а также...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
18.12.2012, 19:42     Функция сортировки двумерного массива #2
Я бы воспользовался стандартной std::sort. К примеру:
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
#include <iostream>
#include <algorithm>
#include <ctime>
 
int main()
{
    std::srand(unsigned(time(0)));
 
    const size_t rows = 5;
    const size_t cols = 3;
    int matrix[rows][cols];
    std::for_each(matrix[0], matrix[0]+rows*cols, [](int& val){val = rand()%99;});
 
    for (size_t i = 0; i<rows; ++i)
    {
        for (size_t j = 0; j<cols; ++j)
            std::cout<<matrix[i][j]<<" ";
        std::cout<<"\n";
    }
 
    std::sort(matrix[0], matrix[0]+rows*cols);
 
    std::cout<<"\n";
    for (size_t i = 0; i<rows; ++i)
    {
        for (size_t j = 0; j<cols; ++j)
            std::cout<<matrix[i][j]<<" ";
        std::cout<<"\n";
    }
 
    std::cout<<"\n";
    system("pause");
    return 0;
}
Fengtu
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 9
19.12.2012, 02:01  [ТС]     Функция сортировки двумерного массива #3
спасибо за ответ, но все же хотелось бы узнать в чем состоит моя ошибка и как можно выкрутится в рамках исходного метода сортировки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2012, 10:52     Функция сортировки двумерного массива
Еще ссылки по теме:

Функция сортировки массива - C++
Задание - необходимо осуществить сортировку, используя функцию. Я написал код, но он не работает. Прошу помочь его исправить. ...

Функция сортировки массива - C++
Необходимо написать функцию сортировки массива структур с информацией по книгам по возрастанию года издания и возвращающую отсортированный...

Функция сортировки массива в структуре - C++
Помогите пожалуйста в написании функции осуществляющей перестановку строк двухмерного массива: первую и последнюю вторую и предпоследнюю,...

Функция объявления двумерного массива - C++
Данный код - объявляет двумерный массив arr. Как из этого куска кода сделать функцию? Передаваемые параметры как мне кажется n и m, а...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,051
Записей в блоге: 3
Завершенные тесты: 1
19.12.2012, 10:52     Функция сортировки двумерного массива #4
Цитата Сообщение от Fengtu Посмотреть сообщение
спасибо за ответ, но все же хотелось бы узнать в чем состоит моя ошибка и как можно выкрутится в рамках исходного метода сортировки.
Вы работаете с mas, как с двойным указателем.
Yandex
Объявления
19.12.2012, 10:52     Функция сортировки двумерного массива
Ответ Создать тему
Опции темы

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