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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2014, 19:29   #1
Милка12
Новичок
Джуниор
 
Регистрация: 18.11.2014
Сообщений: 2
По умолчанию Динамическая матрица

Пусть пользователь вводит динамическую матрицу размером n*n написать функцию для сортировки столбцов матрицы по убыванию
Милка12 вне форума Ответить с цитированием
Старый 18.11.2014, 21:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Такс. Начнемс.
Ввод матрицы показать сможешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2014, 10:09   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Милка12, мне нравится идея делать матрицу на контейнере std::vector, так как легко можно решить задачу с сортировкой: мы копируем столбец в std::vector и сортируем его с помощью std::sort: http://www.cplusplus.com/reference/algorithm/sort/ а потом копируем отсортированный столбец обратно в матрицу

Вот вам заготовка класса Matrix на std::vector:

Matrix.h
Код:
#ifndef MATRIX_H
#define MATRIX_H

#include <vector>
#include <cstddef>

template <typename Type>
class Matrix
{
public:
    Matrix( Type initValue, size_t nrows = 2, size_t ncols = 2 ) :
        m_initValue( initValue ),
        m_matrix( nrows ),
        m_nrows( nrows ),
        m_ncols( ncols )
    {
        // Create columns
        for ( size_t row = 0; row < nrows; ++row ) {
            m_matrix[row].resize( ncols, initValue );
        }
    }

    void setValue( Type value, unsigned int row, unsigned int col )
    {
        m_matrix[row][col] = value;
    }

    Type value( unsigned int row, unsigned int col ) const
    {
        return m_matrix[row][col];
    }

    void addRow()
    {
        std::vector<Type> row( m_ncols, m_initValue );
        m_matrix.push_back( row );
        ++m_nrows;
    }

    void addColumn()
    {
        for ( size_t row = 0; row < m_nrows; ++row ) {
            m_matrix[row].push_back( m_initValue );
        }
        ++m_ncols;
    }

    size_t countRows() const
    {
        return m_nrows;
    }

    size_t countCols() const
    {
        return m_ncols;
    }

private:
    Type m_initValue;
    std::vector< std::vector<Type> > m_matrix;
    size_t m_nrows;
    size_t m_ncols;
};

#endif // MATRIX_H
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая матрица MrBlackD Общие вопросы C/C++ 3 15.10.2012 18:49
Динамическая матрица vbnmrf Общие вопросы C/C++ 4 02.12.2011 20:34
Динамическая матрица ДмитрийРэй Помощь студентам 0 09.05.2011 18:11
Динамическая матрица Shab13 Помощь студентам 1 21.04.2011 11:11
Динамическая матрица Selestis Общие вопросы Delphi 5 20.02.2010 20:37