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

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

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

строки матрици - C++

28.09.2009, 15:18. Просмотров 401. Ответов 2
Метки нет (Все метки)

Упорядочить строки матрицы размером М*N за увеличением минимального елемента строки.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2009, 15:18     строки матрици
Посмотрите здесь:

C++ Матрици
C++ матрици чисел
Заполнение матрици змейкой C++
Максимальный элемент матрици C++
Матрици!!! Почему не вводится 5 строка матрици и невыводится сумма? C++
Матрици C++
Характеристика матрици! C++
Функция на показ матрици... C++
C++ Матрици
C++ Матрици
Матрици А и B C++
Заполнение Матрици C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
R0mm
Псевдо программист
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
28.09.2009, 15:47     строки матрици #2
Вроде так
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
#include "stdafx.h"
#include "iostream"
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int **array;
    int n, m, i, j, k, tmp;
    cout << "Введите число строк:\n->"; cin >> n;
    cout << "Введите число столбцов:\n->"; cin >> m;
 
    array = new int*[n];
    for(i=0; i<n; i++) array[i] = new int[m];
 
    for(i=0; i<n; i++)
        for(j=0; j<m; j++){
            cout << "ARRAY[" << i << "," << j << "]: "; cin >> array[i][j];
        }
 
    for(i=0; i<n; i++){
        for(k = m-1; k>0; k--){
            for(j=0; j<k; j++){
                if (array[i][j]>array[i][j+1]){
                    tmp = array[i][j];
                    array[i][j] = array[i][j+1];
                    array[i][j+1] = tmp;
                }
            }
        }
    }
 
    for(i=0; i<n; i++){
        for(j=0; j<m; j++){
            cout << array[i][j] << " ";
        }
        cout << endl;
    }
 
    system("pause");
    return 0;
}
Rififi
2336 / 1051 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
28.09.2009, 15:56     строки матрици #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>
 
template <typename T, const size_t Rows>
struct max_row : public std::unary_function<
    const T (&)[Rows],
    std::vector<std::pair<typename std::allocator<T>::const_pointer, size_t> > >
{
    typedef std::unary_function<
        const T (&)[Rows],
        std::vector<std::pair<typename std::allocator<T>::const_pointer, size_t> > > base_type;
    typedef typename base_type::argument_type argument_type;
    typedef typename base_type::result_type result_type;
    
    max_row() : index_(0) {}
    void operator()(argument_type v)
    {       
        res_.push_back(std::make_pair(std::min_element(&v[0], &v[0]+Rows), index_++));
    }
 
    operator result_type() const { return res_; }
    
    result_type res_;
    size_t index_;
};
 
template <typename T>
struct comparer : public std::binary_function<
    typename T::value_type, typename T::value_type, bool>
{
    typedef std::binary_function<
        typename T::value_type, typename T::value_type, bool> base_type;
    typedef typename base_type::first_argument_type first_argument_type;
    typedef typename base_type::second_argument_type second_argument_type;
    typedef typename base_type::result_type result_type;
    
    result_type operator()(const first_argument_type& v1, const second_argument_type& v2) const
    {
        return *v1.first < *v2.first;
    }
};
 
template <typename T, const size_t Cols, const size_t Rows>
void sort(T (&arr)[Cols][Rows])
{
    typedef max_row<T, Rows> pred_type;
    typedef typename pred_type::result_type result_type;
    result_type v = std::for_each(&arr[0], &arr[0]+Cols, pred_type());
    
    std::sort(v.begin(), v.end(), comparer<result_type>());
    T tmp[Cols][Rows];
    for(size_t i=0; i<v.size(); i++)
        std::copy(arr[v[i].second], arr[v[i].second]+Rows, tmp[i]);
    std::copy(&tmp[0][0], &tmp[0][0]+Cols*Rows, &arr[0][0]);
}
 
template <
    typename _E, typename _Tr, template <typename, typename> class O,
    typename T, const size_t Rows>
struct outer : public std::unary_function<const T (&)[Rows], void>
{
    typedef std::unary_function<const T (&)[Rows], void> base_type;
    typedef typename base_type::argument_type argument_type;
    typedef typename base_type::result_type result_type;
    
    outer(O<_E,_Tr>& os) : os_(os) {}
    result_type operator()(argument_type v) const
    {
        const _E sep[] = { _E(' '), 0 };
        std::ostream_iterator<T,_E,_Tr> oi(os_, sep); 
        std::copy(&v[0], &v[0]+Rows, oi);
        os_ << std::endl;
    }
    O<_E,_Tr>& os_;
};
 
template <
    typename _E, typename _Tr, template <typename, typename> class O,
    typename T, const size_t Cols, const size_t Rows>
O<_E,_Tr>& operator << (O<_E,_Tr>& os, T (&arr)[Cols][Rows])
{
    std::for_each(&arr[0], &arr[0]+Cols, outer<_E, _Tr, O, T, Rows>(os));
    return (os);
}
 
int main()
{
    int arr[][4] = {
            1, 23, 6, 17,
            3, 25, 6, 44,
            12, 20, 32, 2 };
 
    std::cout << arr << std::endl;
    
    sort(arr);
    
    std::cout << arr;
 
    return 0;
}
Вывод:
1 23 6 17
3 25 6 44
12 20 32 2

1 23 6 17
12 20 32 2
3 25 6 44
Yandex
Объявления
28.09.2009, 15:56     строки матрици
Ответ Создать тему
Опции темы

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