Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2022, 12:56   #1
Wailoon
Новичок
Джуниор
 
Регистрация: 27.10.2022
Сообщений: 3
По умолчанию Сортировка строк двумерного массива

Дан динамический массив, требуется отсортировать нужную строку(в моем случае 2) и вывести обработанный массив, но почему-то мой массив меняет 3 столбец а не 2.
Код:
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <ctime>
using namespace std;
 
void sozdanie(int**& A, int rows, int cols) {
    A = new int* [rows];
    for (int i = 0; i < rows; i++) {
        A[i] = new int[cols];
    }
}
 
void zapolnenie(int** A, int rows, int cols) {    
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            cout << "Введите элемент " << i + 1 << " " << j + 1 << " матрицы\n";
            cin >> A[i][j];
        }
    }
}
 
void vivod(int** A, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            cout << "\t" << A[i][j];
        }
        cout << endl;
    }
    cout << endl;
}
 
void SortColumn(int** a, int k, int rows) {
    for (int i = 0; i < rows - 1; i++) {
        for (int j = 0; j < rows - 1 - i; j++) {
            if (a[j][k] > a[j + 1][k]) {
                int tmp = a[j][k];
                a[j][k] = a[j + 1][k];
                a[j + 1][k] = tmp;
            }
        }
    }

}
 
int main() {
    setlocale(LC_ALL, "Russian");
    int rows, cols;
    cout << "rows - ";
    cin >> rows;
    cout << "cols - ";
    cin >> cols;
    int** A;
    sozdanie(A, rows, cols);
    zapolnenie(A, rows, cols);
    
    // ДО
    vivod(A, rows, cols);
 
    SortColumn(A, 2, rows); 

    // ПОСЛЕ
    vivod(A, rows, cols);

    return 0;
}
Wailoon вне форума Ответить с цитированием
Старый 27.10.2022, 13:11   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

0 1 2 3 ... // счет колонок в программе
1 2 3 4 ... // счет колонок на экране
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 28.10.2022, 02:11   #3
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Wailoon, так вам надо отсортировать строку или столбец? Ну и помним, что индексы с нуля идут:
Код:
SortColumn(A, 0, rows); // сортируем первый столбец
SortColumn(A, 1, rows); // сортируем второй столбец
SortColumn(A, 2, rows); // сортируем третий столбец
и т. д.
Пётр Седов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного массива с++ Kenny_LVM Помощь студентам 0 24.11.2019 14:40
Сортировка строк двумерного массива в паскале Zo_0m Помощь студентам 0 13.11.2011 16:43
Сортировка двумерного массива Расим Помощь студентам 7 15.12.2009 22:29
Сортировка двумерного массива в С(Си) savra Помощь студентам 5 26.11.2009 10:47
[С++] Сортировка 2ух строк двумерного массива. ReDev1L Помощь студентам 1 19.10.2008 03:45