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

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

Войти
Регистрация
Восстановить пароль
 
Ofigen4ik
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 25
#1

Передача двумерного динамического массива в функцию построчно и сортировка - C++

06.03.2015, 09:09. Просмотров 511. Ответов 1
Метки нет (Все метки)

Всем доброго времени суток! Собственно сабж: есть двумерный динамический массив, который надо делить на одномерные и передавать в функцию для последующей сортировки.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <ctime>
#include <iomanip>
#include <windows.h>
using namespace std;
 
void inputArray(int** arr, int n, int m);
void outputArray(int** arr, int n, int m);
void sortRows(int* row, int m);
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand(time(0));
    int n = 5, m = 5;
    int** ptrarr = new int*[n];
    for(int i = 0; i < n; i++)
        ptrarr[i] = new int[m];
    inputArray(ptrarr, n, m);
    cout << "Исходный массив: " << endl;
    outputArray(ptrarr, n, m);  
    for(int i = 0; i < n; i++) {
        int* ptrrow = new int[m];
        for(int j = 0; j < m; j++) {
            ptrrow[j] = ptrarr[i][j];
            sortRows(ptrrow, m);
            ptrarr[i][j] = ptrrow[j];
        }
        delete[] ptrrow;
    }
    cout << endl << "Отсортированный массив: " << endl;
    outputArray(ptrarr, n, m);
    for(int i = 0; i < n; i++)
        delete[] ptrarr[i];
    delete[] ptrarr;
    return 0;
}
 
void inputArray(int** arr, int n, int m) {
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m ; j++)
            arr[i][j] = rand()%100 - 50;
}
 
void outputArray(int** arr, int n, int m) {
    for(int i = 0; i < n; i++) {
        cout << endl << "  ";
        for(int j = 0; j < m; j++)
            cout << setw(3) << arr[i][j] << "  ";
    }
}
 
void sortRows(int* row, int m) {
 
int tmp, i, j;
    for(i = 0; i < m - 1; i++) {            
        for(j = 0; j < m - 1; j++) {     
            if (row[j + 1] < row[j]) {
                tmp = row[j + 1]; 
                row[j + 1] = row[j]; 
                row[j] = tmp;
            }
        }
    }
}
Но сортировка выполняется совершенно не так как надо, пробовал и бабл сорт, и вставки и выбором, все равно появляются левые числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2015, 09:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача двумерного динамического массива в функцию построчно и сортировка (C++):

Передача динамического двумерного массива в функцию - C++
Я сделал вот так: void PrintMatrix(int** matrix, int&amp; n, int&amp; m) { for (int i = 0; i &lt; n; i++) { cout &lt;&lt; &quot;Row &quot; &lt;&lt; (i...

Передача двумерного динамического массива в функцию(объяснение) - C++
Когда мы хотим передать двумерный динамический массив в функцию через указатели (**a) , то в теле ф-ии main() , мы пишем так , как указано...

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

Передача двумерного динамического массива чисел в функцию - C++
void Map::setCell(int** block, Room* room, int type){ for(int i=room-&gt;x; i&lt;room-&gt;w; ++i) for(int j=room-&gt;y; j&lt;room-&gt;h; ++j) ...

Передача двумерного динамического массива в функцию в качестве параметра - C++
Вообщем надо сложить и умножить две матрицы, но сделать это в отдельных функциях. Матрицы заданы динамическими массивами размерами n*m и...

Передача динамического двумерного массива в процедуру - C++
Написал вот такой код для одномерного динамического массива #include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; ...

1
zss
Модератор
Эксперт С++
6686 / 6248 / 2083
Регистрация: 18.12.2011
Сообщений: 16,319
Завершенные тесты: 1
06.03.2015, 09:56 #2
Дополнительный массив - это лишнее
C++
1
2
3
4
for(int i = 0; i < n; i++) 
{
            sortRows(ptrarr[i], m);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2015, 09:56
Привет! Вот еще темы с ответами:

Передача динамического двумерного массива через параметры - C++
в такой вот простенькой программке: #include .. const n = 4; void ENTR(double pMas, char *file) { ifstream SMas(file); ...

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

Вывод динамического двумерного массива через функцию - C++
Имею следующий код: void matrix_output (int **matrix, int N) { for (int i=0; i&lt;N; i++) { for...

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


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

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

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