Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Barak001
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 4
1

Упорядочить строки матриц по числу элементов кратных заданному числу

18.12.2015, 07:07. Просмотров 837. Ответов 1
Метки нет (Все метки)

Даны три целочисленные матрица A[6x6], B[8x8] и C[8x10].
Упорядочить строки матриц по числу элементов, кратных №, поставив на первое место строку с наименьшим числом таких элементов и.т.д. на последнее - с наибольшим числом таких элементов.

Убедительная просьба помочь, чего-то не получается, никак не могу понять.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2015, 07:07
Ответы с готовыми решениями:

Упорядочить все строки матрицы по числу элементов, кратных двум
помогите плиз, написать програмку просто на "си" которая должна:Упорядочить все строки матрицы по...

В матрице найти сумму нечетных элементов столбца и произведение отрицательных кратных заданному числу элементов строки
2 задача: Найти сумму нечетных элементов 2-го столбца и произведение отрицательных кратных 3...

Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2
Ребята помогите пожалуйста решить 2 задачи с помощью цикла do и while. (без массива) 1)Дана...

Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2
Надо решить задачи используя все типы циклов (for, while, do while). Помогите пожалуйста буду...

Найти количество элементов последовательности, кратных числу К1 и не кратных числу К2
1.Дана последовательность из n целых чисел. Найти количество элементов этой последовательности...

1
Геомеханик
805 / 608 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
18.12.2015, 19:46 2
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <iostream>
#include <fstream>
void  m_qsort(int** m, int* cs, int M, int l, int r);
template<class Cmp>
bool  matrix_sort(int** m, int N, int M, Cmp cmp);
int** matrix_input(std::istream& _in, int& N, int& M);
void  matrix_output(std::ostream& _out, int** m, int N, int M);
void  matrix_free(int** m, int N);
 
struct icmp {
    int n;
    icmp(int _n):n(_n){}
 
    bool operator () (int x) const {
        return ((x % n) == 0);
    }
};
 
int main(void){
    int** m, N, M;
/*  ввод из файла
    std::ifstream fp("matrix.txt");
    m = matrix_input(fp, N, M);
    fp.close();
    if(m == NULL)
        return 1;
    matrix_output(std::cout, m, N, M);
    matrix_sort(m, N, M, icmp(3));
    matrix_output(std::cout, m, N, M);
    matrix_free(m, N);
*/
    m = matrix_input(std::cin, N, M);
    if(m == NULL)
        return 1;
    matrix_output(std::cout, m, N, M);
    
    //сортируем строки матрицы по-числу кратному 3-ём
    matrix_sort(m, N, M, icmp(3));
    matrix_output(std::cout, m, N, M);
    matrix_free(m, N);
    return 0;
}
 
//сортировка строк матрицы
template<class Cmp>
bool matrix_sort(int** m, int N, int M, Cmp cmp){
    int* cs = new (std::nothrow) int[N];
    if(cs == NULL)
        return false;
 
    for(int i = 0; i < N; ++i){
        cs[i] = 0;
        for(int j = 0; j < M; ++j){
            if(cmp(m[i][j]))
                ++cs[i];
        }
    }
    m_qsort(m, cs, M, 0, N - 1);
    delete[] cs;
    return true;
}
 
//ввод матрицы из входного потока
int** matrix_input(std::istream& _in, int& N, int& M){
    int** m, i, j;
    if(!(_in >> N >> M) || (N <= 1) || (M <= 1))
        return NULL;
 
    m = new (std::nothrow) int*[N];
    if(m == NULL)
        return NULL;
 
    for(i = 0; i < N; ++i){
        m[i] = new (std::nothrow) int[M];
        if(m[i] == NULL){
            --i;
            goto err;
        }
 
        j = 0;
        while((j < M) && (_in >> m[i][j]) && !_in.fail())
            ++j;
 
        if(j != M)
            goto err;
    }
    return m;
err:
    for(j = i; j >= 0; --j)
        delete[] m[j];
    delete[] m;
    return NULL;
}
 
//вывод матрицы в выходной поток
void matrix_output(std::ostream& _out, int** m, int N, int M){
    for(int i = 0; i < N; ++i){
        for(int j = 0; j < M; ++j)
            _out << m[i][j] << ' ';
        _out << std::endl;
    }
    _out << std::endl;
}
 
//удаление матрицы
void matrix_free(int** m, int N){
    for(int i = 0; i < N; ++i)
        delete[] m[i];
    delete[] m;
}
 
//базовая быстрая сортировка
void m_qsort(int** m, int* cs, int M, int l, int r){
    int p, i = l, j = r;
    if(l >= r)
        return;
    
    p = cs[l + (r - l) / 2];
    while(i <= j){
        while(cs[i] < p)
            ++i;
        while(cs[j] > p)
            --j;
 
        if(i <= j){
            for(int v = 0; v < M; ++v)
                std::swap(m[i][v], m[j][v]);
            std::swap(cs[i], cs[j]);
            ++i;
            --j;
        }
    }
 
    if(j > l)
        m_qsort(m, cs, M, l, j);
    if(r > i)
        m_qsort(m, cs, M, i, r);
}
Пример работы кода
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2015, 19:46

Найти количество элементов последовательности, кратных числу K1 и не кратных числу K2
Дана последовательность из n целых чисел. Найти количество элементов этой последовательности,...

Найти количество элементов последовательности, кратных числу K1 и не кратных числу K2
2)Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой...

Найти количество элементов последовательности, кратных числу K1 и не кратных числу K2
2. Дана последовательность из n целых чисел. Найти количество элементов этой последовательности,...


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

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

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