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

Сортировка матрицы глупым методом C++

14.12.2019, 12:23. Показов 2881. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, стоит задача: отсортировать все элементы каждого столбца квадратной матрицы которые расположенные под главной диагональю матрицы
Код приложил,не могу понять, как задать сортировать только элементы под диагональю, буду благодарен за любую помощь.

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
#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <iostream>
 
using namespace std;
const int n=5,m=5;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    srand(time(NULL));
    int i,j,tmp;
    int mat[n][m];
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            mat[i][j]=rand()%50-25;
            printf("%4i ",mat[i][j]);
        }
        cout<<endl;
    }
    cout<<endl; 
        for(j=0;j<n;j++)
        {
            i=0;
            while(i<n-1)
            {
                if(mat[i][j]>mat[i+1][j])
                {
                    tmp=mat[i][j];
                    mat[i][j]=mat[i+1][j];
                    mat[i+1][j]=tmp;
                    i=0;
                }
                else
                i++;
        }
}
 
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%4i ",mat[i][j]);
        }
        cout <<endl;
    }
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.12.2019, 12:23
Ответы с готовыми решениями:

Сортировка матрицы методом Шелла
Помогите пожалуйста!!! Нужно написать программу, сортирующую матрицу методом Шелла на C++: Исходные данные - линейный массив размером...

Сортировка матрицы методом пузырька
Чтобы не пересказывать, просто скопирую условие задачи: &quot;Строки вещественной матрицы упорядочить по возрастанию ее последнего столбца и в...

Сортировка матрицы методом пузырька
Дана матрица*A целых чисел. Напишите программу, которая переставит столбцы матрицы*А*таким образом, чтобы элементы первой строки стали...

16
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.12.2019, 04:04
del
0
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
15.12.2019, 04:47
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
#include <iostream>
#include <algorithm>
 
int main()
{
    int n;
    std::cin >> n;
 
    int** arr = new int* [n];
    for (size_t i(0); i != n; ++i) {
        arr[i] = new int[n];
        for (size_t j(0); j != n; ++j)
            arr[i][j] = rand() % 50 - 25;
    }
 
    auto show = [&]() {
        for (size_t i(0); i != n; ++i) {
            for (size_t j(0); j != n; ++j)
                std::cout.width(4), std::cout << arr[i][j];
            std::cout << '\n';
        }
        std::cout << '\n';
    };
    auto transpose = [&]() {
        for (size_t i(0); i != n; ++i)
            for (size_t j(0); j != i; ++j)
                std::swap(arr[i][j], arr[j][i]);
    };
 
    show();
    transpose();
    for (size_t i(0); i != n; ++i) std::sort(arr[i] + i + 1, arr[i] + n);
    transpose();
    show();
 
    for (size_t i(0); i != n; ++i)
        delete[] arr[i];
    delete[] arr;
    return 0;
}
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.12.2019, 05:08
nalbe666, ТС нужна глупая сортировка (Stupid sort)
0
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
15.12.2019, 05:09
Yetty, оу, не знал про такую. Значит мимо.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.12.2019, 05:27
Roma2806, уточняйте сразу по убыванию или возрастанию. по возрастанию:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n;
    cout << "n="; cin >> n;    
    
      double **a = new double*[n]; 
    for (int i = 0; i < n; i++)
       a[i]=new double[n];
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
        a[i][j]=rand()%9 + 1;
        cout <<a[i][j]<<" ";
        }
    cout << "\n";
    }
    cout << "\n";   
            
    for (int j = 0; j < n; j++)     
    for (int i = j + 1; i < n; )
    {
        if (i==0 || a[i-1][j]<=a[i][j])
        {
        ++i;
        }
        else
        {
        swap(a[i][j],a[i-1][j]);
        --i;
        }
    }
    
    for (int i = 0; i < n; i++) 
    {
        for (int j = 0; j < n; j++) 
        cout << a[i][j] << " ";    
    cout << "\n";
    }
 
    for (int i = 0; i < n; i++)
    delete [] a[i];
    delete [] a;
 
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 77
15.12.2019, 23:03  [ТС]
Спасибо, но оно работает не совсем так,
Оно сортирует все столбцы кроме последнего.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.12.2019, 23:07
Цитата Сообщение от Roma2806 Посмотреть сообщение
сортирует все столбцы кроме последнего
что Вы имеете ввиду ? под главной диагональю вообще нет элементов в последнем столбце.
0
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 77
15.12.2019, 23:19  [ТС]
Мне нужно сортировать только эти диагонали, по убыванию
Миниатюры
Сортировка матрицы глупым методом C++  
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.12.2019, 23:51
Цитата Сообщение от Roma2806 Посмотреть сообщение
Мне нужно сортировать только эти диагонали, по убыванию
не диагонали Вам нужно сортировать, а элементы столбцов под главной диагональю (столбцы это вертикальные линии может Вам так проще понять). столбцы и сортируются. только по возрастанию, а не по убыванию (так как Вы не сообщили сразу что Вам нужно их отсортировать по убыванию)

попробуйте переделать сортировку (вместо возрастания сделать убывание). если не получится - сообщите

специально для Вас ещё цветом обозначил что именно отсортировано
6
7 5
8 6 6
9 8 6 4
неужели сложно задать размер побольше, например n=10 и просто посмотреть ?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
15.12.2019, 23:58
Yetty, ему нужно ниже диагонали, т. е. не включая элементы диагонали(судя по картинке)
1
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 77
16.12.2019, 00:03  [ТС]
по убыванию сделал, но оно сортирует не правильно,
Миниатюры
Сортировка матрицы глупым методом C++  
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
16.12.2019, 00:26
zayats80888, Вы решили присоединиться к ТС ?

Roma2806, проведите линию из левого верхнего угла в правый нижний. это главная диагональ. красная ломаная линия которую Вы нарисовали находится ВЫШЕ главной диагонали и не имеет никакого отношения к задаче. нужно сортировать части столбцов, которые находятся НИЖЕ главной диагонали, неужели до сих пор не понятно ?

всё что выделено красным отсортировано
2 1 1 1 4 8 3 8 1 8
2 3 3 3 4 9 4 3 1 2
3 4 4 3 6 3 2 8 2 4
6 5 4 4 7 6 2 7 3 9
6 5 4 4 1 1 2 4 3 5
8 6 7 5 4 2 5 7 4 1
8 6 8 5 6 2 7 2 4 1
9 8 8 5 8 2 8 1 4 7
9 9 9 7 8 7 9 2 7 6
9 9 9 9 9 8 9 5 9 9
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
16.12.2019, 00:30
Цитата Сообщение от Yetty Посмотреть сообщение
Вы решили присоединиться к ТС ?
Ваш код из поста №6 затрагивает элементы на диагонали (это и на картинках видно)
0
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 77
16.12.2019, 00:34  [ТС]
Оно затрагивает значения которые находятся в главной диагонали и выше, скриншот выше приложил, посмотрите внимательно
Миниатюры
Сортировка матрицы глупым методом C++  
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
16.12.2019, 00:48
Лучший ответ Сообщение было отмечено Roma2806 как решение

Решение

zayats80888, Roma2806, всё, понял о чём Вы. я только ниже главной смотрю, а на верх и внимания не обращаю, а там действительно непорядок. сейчас буду смотреть что не так.

Добавлено через 11 минут
Roma2806, поменяйте строку 30 на такую:
C++
1
if (i==j+1 || a[i-1][j]>=a[i][j])
проверьте и сообщите результат
1
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 77
16.12.2019, 01:30  [ТС]
Заработало, теперь вопрос, почему не работает printf(""), если я его пишу вместо cout он тупо ничего не выводить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2019, 01:30
Помогаю со студенческими работами здесь

Сортировка матрицы методом Шелла
Отстортируйте матрицу методом Шелла. Помогите, пожалуйста.

Сортировка столбцов матрицы методом Шелла
#include&lt;iostream&gt; #include &lt;cstdlib&gt; #include&lt;fstream&gt; #include &lt;algorithm&gt; #include&lt;string&gt; #include&lt;vector&gt; ...

Сортировка диагоналей матрицы методом вставки
В общем нужно сортировать методом вставки диагонали, параллельные главной по убыванию Код сделан на половину, отлично сортирует...

Сортировка строк матрицы методом Шелла
Дана матрица размерности n*n отсортировать строки матрицы методом шелла по возрастанию=)

Сортировка матрицы по возрастанию методом выбора максимума
Здравствуйте! Нужно отсортировать матрицу по возрастанию методом выбора максимума в соответствии с рисунком Не понимаю как сделать саму...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru