Другие языки программирования и технологии

Как отсортировать статический двухмерный массив?

Что я сделал:

int **mass, *point, i, j;

mass = new int* [4];
for (i = 0; i < 4; i ++) mass = new int [2];

for (i = 1; i < 4; i ++)
for (j = 3; j > i - 1; j --)
if (mass[j -1][0] > mass[j][0]){
point = mass[j - 1];
mass[j - 1] = mass[j];
mass[j] = point;
}

for (i = 0; i < 4; i ++) delete []mass;
delete []mass;

Что нужно сделать: в массиве 4 на 2 выполнить сортировку по строкам таким образом, чтобы первые элементы (mass[0]) были упорядочены по возрастанию. Я новичок в программировании и дико туплю с указателями, поэтому прошу ногами не пинать.
Дамир Сафаров
Дамир Сафаров
3 395
> Как отсортировать статический двухмерный массив?
Что-то у тебя массив совсем не статический, а очень даже динамический.

#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <algorithm>

using namespace std;

bool cmp(int *x, int *y) { return x[0] < y[0]; }

int main() {
    srand(time(0));

    int **mass = new int *[4];

    for (int r = 0; r < 4; ++r) {
        mass[r] = new int[2];
        for (int c = 0; c < 2; ++c) cout << setw(4) << (mass[r][c] = rand() % 100);
        cout << endl;
    }
    cout << endl;

    sort(mass, mass + 4, cmp);

    for (int r = 0; r < 4; ++r) {
        for (int c = 0; c < 2; ++c) cout << setw(4) << mass[r][c];
        cout << endl;
    }

    for (int r = 0; r < 4; ++r) delete[] mass[r];
    delete mass;
    return 0;
}

> Работаю в шестом билдере.
Выкинь каку.
Jeyhun Rustemov
Jeyhun Rustemov
60 065
Лучший ответ
Дамир Сафаров в том-то и дело, что он динамический, и с ним всё работает, но мне тут динамика не нужна. или так будет лучше?
и чем тебя билдер не устраивает?
В третьей строчке:
for (i = 0; i < 4; i ++) mass[i] = new int [2];
Добавить ввод-вывод и все должно работать.