Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.05.2022
Сообщений: 5

Отсортировать столбцы матрицы в порядке неубывания среднего арифметического элементов столбцов

10.10.2022, 12:56. Показов 656. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано: прямоугольная матрица A [N,M]. Отсортировать столбцы матрицы в порядке
неубывания среднего арифметического элементов столбцов. Нахождение минимального
элемента столбца оформить как функцию. Перестановку столбцов оформить как функцию. Вывод элементов матрицы оформить как функцию. Неправильно сортирует матрицу, подскажите в чём проблема.
Основная функция:

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
#include<iostream>
#include"Min.h"
#include"Out.h"
#include"Sort.h"
using namespace std;
void min(int** A, int N, int M);
void out(int** A, int N, int M);
void sort(int** A, int N, int M, float* B);
void main()
{
    setlocale(LC_ALL, "rus");
    int N, M, i, j;
    float r = 0;
    cout << "Введите колличество строк: ";
    cin >> N;
    cout << "Введите колличество столбцов: ";
    cin >> M;
    int** A = new int* [N];
    for (int i = 0; i < N; i++)
    {
        A[i] = new int[M];
    }
    float* B = new float[M];
    cout << "Введите массив:" << "\t";
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            cin >> A[i][j];
        }
    }
    cout << "Введённая матрица\n";
    out(A, N, M);
    for (j = 0; j < M; j++)
    {
        float S = 0;
        for (i = 0; i < N; i++)
        {
            S += A[i][j];
        }
        B[j] = S / i;
        cout << "Среднее в столбце(" << j + 1 << "): " << B[j] << endl;
    }
        sort(A, N, M, B);
        cout << "Отсортированная матрица: \n";
        out(A, N, M);
        min(A, N, M);
        system("pause");
}
Нахождение минимума:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#ifndef Min_h
#define Min_h
using namespace std;
void min(int** A, int N, int M)
{
    for (int j = 0; j < M; j++)
    {
        int min = A[0][j];
        for (int i = 0; i < N; i++)
        {
            if (A[i][j] <= min)
                min = A[i][j];
        }
        cout << "Минимальный элемент(" << j + 1 << ") столбца: " << min << endl;
    }
}
#endif
Функция Вывода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#ifndef Out_h
#define Out_h
using namespace std;
void out(int** A, int N, int M)
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
            cout << A[i][j] << "\t";
        cout << endl;
    }
}
#endif
Функция сортировки:

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
#include <iostream>
#ifndef Sort_h
#define Sort_h
using namespace std;
int k = 0, i, j, r = 1, minr;
void sort(int** A, int N, int M, float* B)
 {
        {
            for (i = 0; i < N; i++)
            {
                for (j = 0; j < M; j++)
                {
                    r = B[j];
                    for (int k = j + 1; k < M; k++)
                    {
                        if (r < B[k])
                        {
                            int tmp = A[i][k];
                            A[i][k] = A[i][j];
                            A[i][j] = tmp;
                        }
                    }
                }
            }
        }
 }
#endif
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2022, 12:56
Ответы с готовыми решениями:

Как отсортировать столбцы матрицы в порядке неубывания среднего арифметического элементов столбцов?
Подкорректируйте, пожалуйста, программу. Дано: прямоугольная матрица А. Отсортировать столбцы матрицы в порядке неубывания среднего...

Дано: прямоугольная матрица. Отсортировать столбцы матрицы в порядке неубывания сумм положительных элементов столбцов
Дано: прямоугольная матриц. Отсортировать столбцы матрицы в порядке неубывания сумм положительных элементов столбцов. Нахождение суммы...

Отсортировать столбцы матрицы в порядке не убывания минимальных элементов столбцов
Дано: прямоугольная матрица A. Отсортировать столбцы матрицы в порядке не убывания минимальных элементов столбцов. Нахождение минимального...

4
17 / 13 / 4
Регистрация: 19.10.2018
Сообщений: 128
11.10.2022, 01:33
Цитата Сообщение от Sanya2016 Посмотреть сообщение
Перестановку столбцов оформить как функцию
я не могу найти эту функцию. возможно, если вы сделаете функцию перестановки столбцов, будет проще

Добавлено через 3 минуты
Цитата Сообщение от Sanya2016 Посмотреть сообщение
void min(int** A, int N, int M);
void out(int** A, int N, int M);
void sort(int** A, int N, int M, float* B);
мне кажется, это лишнее. они уже объявлены в заголовочных файлах и повторно их объявлять не надо. попробуйте вычеркнуть эти строки. проблема не в этом, просто заметил

Добавлено через 3 минуты
Цитата Сообщение от Sanya2016 Посмотреть сообщение
int** A = new int* [N];
у меня мало опыта в подобных делах, я обычно unique_ptr использую или vector. это нормально что new есть, а delete нет?

Добавлено через 5 минут
хотя бы так напиши. а лучше все-таки unique_ptr или vector, они хорошо написаны и обкатаны годами, неожиданных особых ситуаций не возникнет
C++
1
2
3
4
5
    for (int i = 0; i < N; i++)
    {
        delete A[i];
    }
    delete A;
Добавлено через 13 минут
ну я посмотрел, вроде он сортирует, но в обратном порядке. вы не полбовали знак болше-меньше перевернуть?
0
0 / 0 / 0
Регистрация: 10.05.2022
Сообщений: 5
11.10.2022, 05:44  [ТС]
Он сортирует, но при небольшом размере матрицы. Если, например, поставить 5 строк и 6 столбцов, то программа чаще всего сортирует не правильно.
0
17 / 13 / 4
Регистрация: 19.10.2018
Сообщений: 128
11.10.2022, 11:38
Цитата Сообщение от Sanya2016 Посмотреть сообщение
Если, например, поставить 5 строк и 6 столбцов
когда задаете вопрос, приводите пример неправильного поведения сразу. я бы тогда проверял что-то кроме 3х3
0
0 / 0 / 0
Регистрация: 10.05.2022
Сообщений: 5
11.10.2022, 15:11  [ТС]
Извиняюсь, сразу не подумал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2022, 15:11
Помогаю со студенческими работами здесь

Отсортировать строки матрицы в порядке неубывания сумм положительных элементов строк
Дано: прямоугольная матрица А. Отсортировать строки матрицы в порядке неубывания сумм положительных элементов строк. Нахождение суммы...

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

Отсортировать строки исходной динамической матрицы по убыванию среднего арифметического ее элементов
Дан двумерный массив размером N * M. Добавьте в каждую строку дополнительный элемент (M + 1) – среднеарифметическое значение строки. ...

Матрицы. Подсчитать число столбцов, среднее арифметическое элементов которых меньше среднего арифметического всех элементов
В матрице А(6,6) подсчитать число столбцов, среднее арифметическое элементов которых меньше среднего арифметического всех элементов матрицы

Массив: подсчитать число столбцов, среднее арифметическое элементов которых меньше среднего арифметического всех элементов матрицы.
В матрице A(6, 6) подсчитать число столбцов, среднее арифметическое элементов которых меньше среднего арифметического всех элементов...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru