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

Сортировать массив таким образом, чтобы сначала располагались все серии из одинаковых элементов, а затем - все остальные

12.06.2020, 17:55. Показов 1775. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана квадратная матрица, а суть задания, чтобы первые элементы матрицы были серии из одинаковых элементов, а дальше остальные. Нужен пример кода

Добавлено через 56 минут
пример:
3 4 1 2
5 4 4 3
1 2 3 5
1 1 1 0
вывод:
4 4 1 1
1 3 4 1
2 5 3 1
2 3 5 0

Добавлено через 17 минут
вот несколько строк кода, но как занести эти данные в новый масив не могу понять
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
int max = 0, count = 0, max_i = 0;
            bool flag = false;
            for (int i = 0; i < Arr.MatricaRozmir(); i++) {
                for (int j = 0; j < Arr.MatricaRozmir(); j++) {
                    if (Arr.MatricaGet(i, j) == Arr.MatricaGet(i, j + 1)) {
                        if (flag) {
                            count++;
                        }
                        else {
                            flag = true;
                            count++;
                        }
                    }
                    else {
                        if (flag) {
                            if (count > max) {
                                max = count;
                                max_i = i;
                            }
                        }
                        count = 0;
                        flag = false;
                    }
                }
            }
            cout << ++max_i;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.06.2020, 17:55
Ответы с готовыми решениями:

Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; using namespace std; void float1(double...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом - все остальные
Помогите, пожалуйста. как составить код в с++. Дан целочисленный массив размера N. Преобразовать массив таким образом, чтобы сначала...

Превратить массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом - все остальные
Превратить массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом - все остальные.

16
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
12.06.2020, 18:26
Извините, но я ужаснулся, увидев это, прошу прощения, это точно с++, если да, то что это:
C++
1
2
Arr.MatricaRozmir() == Arr.size()
Arr.MatricaGet(i, j) == Arr[i][j]
Судя из всего этого, ваш Arr ничуть не похож на int Arr[][], то есть вы хотите сказать, что сами написали двумерный массив?
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 36
12.06.2020, 18:32  [ТС]
Цитата Сообщение от Super-Hacker Посмотреть сообщение
Судя из всего этого, ваш Arr ничуть не похож на int Arr[][], то есть вы хотите сказать, что сами написали двумерный массив?
простите, это отрывок от моего кода, уже адаптировал и забыл поменять

Добавлено через 1 минуту
информация содержится в классе, вот и посылаюсь на его элементы и функции
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
12.06.2020, 18:36
Хорошо, но в чем проблема, у вас есть все данные, в чем проблема создать еще один массив и просто перенести данные по средствам присваивания
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 36
12.06.2020, 18:39  [ТС]
Цитата Сообщение от Super-Hacker Посмотреть сообщение
Хорошо, но в чем проблема, у вас есть все данные, в чем проблема создать еще один массив и просто перенести данные по средствам присваивания
сложно собрать всё до кучи
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
12.06.2020, 18:58
Можете объяснить смысл того, что должно получиться после сортировки
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 36
12.06.2020, 19:01  [ТС]
Цитата Сообщение от Super-Hacker Посмотреть сообщение
Можете объяснить смысл того, что должно получиться после сортировки
после сортировки должны идти сначала серии из одинаковых элементов в строке
Цитата Сообщение от SnIpErFaN Посмотреть сообщение
5 4 4 3
тут видим в строке две 4, значит они должны идти первыми в новом массиве
Цитата Сообщение от SnIpErFaN Посмотреть сообщение
4 4 1 1
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
12.06.2020, 20:30
Я все равно не до конца понял вас

давайте на примере: 1 1 1 0, почему ответ для данной строки 2 3 5 0
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 36
13.06.2020, 13:55  [ТС]
Цитата Сообщение от Super-Hacker Посмотреть сообщение
Я все равно не до конца понял вас
давайте на примере: 1 1 1 0, почему ответ для данной строки 2 3 5 0
иду по элементам слева направо, переходя на следующую строку
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
13.06.2020, 14:17
С таким подходом вам ничем не помочь, почему вы не хотите рассказать больше об этой сортировке: что такое серия, при чем тут следующая строка, если я просил рассказать почему ответ на данную строку именно таков, почему
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 36
13.06.2020, 14:35  [ТС]
Цитата Сообщение от Super-Hacker Посмотреть сообщение
С таким подходом вам ничем не помочь, почему вы не хотите рассказать больше об этой сортировке: что такое серия
серия - 2 и > повторяющихся чисел в строке
Цитата Сообщение от Super-Hacker Посмотреть сообщение
при чем тут следующая строка
3 4 1 2
5 4 4 3
1 2 3 5
1 1 1 0
сначала начитаем идти по массиву начиная с 3>4>1>2>5>4>4(в данном месте должна быть проверка на серию, если да, то свапнуть с первыми двумя)>3>1>2>3>5>1>1>1(тут тоже срабатывает и вместо 3, 4 и 5 элементов массива ставлятся эти)>0
выходит:
4 4 1 1
1 3 4 3
1 2 3 5
1 2 5 0(да, я ошибся выше, приношу извинения)
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
13.06.2020, 14:42
Ага, кажется понял, могу предложить довольно интересную реализацию

Добавлено через 26 секунд
Для начала откажитесь от двумерного массива, считайте все в одномерный

Добавлено через 43 секунды
Потом создайте структуру(или просто пару pair<int, int>)

Добавлено через 27 секунд
И вот такой массив
C++
1
pair <int, int> a[];
Добавлено через 41 секунду
И туда сохраняйте данные обо всех сериях

Добавлено через 16 секунд
Если надо могу предоставить кусочек кода
1
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 36
13.06.2020, 14:48  [ТС]
Цитата Сообщение от Super-Hacker Посмотреть сообщение
Если надо могу предоставить кусочек кода
с удовольствием)
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
13.06.2020, 14:51
Держите мой псевдоС++


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    int a[n * m];
    for(0...n * m)
    cin >> a[i];
    vector <pair<int, int>> v;
    for(0...n * m)
        int k = 0;
        while(a[i] == a[i + 1])
            k++;
            i++;
        v.push_back({a[i], k}); //типа сам элемент и его количество
    sort(v.begin(), v.end());
    reverse(v.begin(), v.end());
    int mm = m;
    for(i..v.size())
        while(v[i].second() != 0)
            v[i].second--;
            mm--;
            cout << v[i].first << ' ';
            if(mm == 0)
                mm = m;
                cout << endl;
1
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 36
13.06.2020, 15:10  [ТС]
Цитата Сообщение от Super-Hacker Посмотреть сообщение
v.push_back({a[i], k}); //типа сам элемент и его количество
    sort(v.begin(), v.end());
как это понять?)

Добавлено через 7 минут
может лучше для понимания будет написать на C++?
0
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
13.06.2020, 19:56
Да уж жаль меня, но видимо написать придется
1
 Аватар для Super-Hacker
342 / 114 / 37
Регистрация: 26.11.2019
Сообщений: 735
13.06.2020, 20:32
Лучший ответ Сообщение было отмечено SnIpErFaN как решение

Решение

Название: ty_vLFGDn9Y.jpg
Просмотров: 17

Размер: 7.0 Кб

Вот что у меня получилось, ведь сначала посчитал длину серий для каждого элемента, а после посортировал сначала по длинне серии, а после по значению

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
#include <bits/stdc++.h> // если у вас не gcc/g++, замените на iostream и vector
 
using namespace std;
 
 
bool comp(pair<int, int> a, pair<int, int> b)
{
    if(a.second > b.second)return 1;
    if(a.second == b.second)return a.first > b.first;
    return 0;
}
 
int main()
{
    int n;
    cin >> n;
    int a[n * n];
    for(int i = 0; i < n * n; i++)
    {
        cin >> a[i];
    }
    vector <pair<int, int>> v;
    for(int i = 0; i < n * n; i++)
    {
        int k = 0;
        while(a[i] == a[i + 1])
        {
            k++;
            i++;
        }
        v.push_back({a[i], k + 1});
    }
    cout << endl;
    sort(v.begin(), v.end(), comp);
    int copn = n;
    for(int i = 0; i < v.size(); i++)
    {
        while(v[i].second != 0)
        {
            v[i].second--;
            cout << v[i].first << ' ';
            copn--;
            if(copn == 0)
            {
                copn = n;
                cout << endl;
            }
        }
 
 
    }
 
 
 
 
 
 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.06.2020, 20:32
Помогаю со студенческими работами здесь

Сортировать массив таким образом, чтобы сначала располагались все положительные элементы
Сортировать массив таким образом, чтобы сначала располагались все положительные элементы, а потом - все отрицательные (элементы, равные 0...

Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные.как доработать?
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; using namespace std; void float1(double...

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом все остальные
привет всем) никак не могу придумать влгоритм для куска задачи: преобразовать массив таким образом, чтобы сначала располагались все...

Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int main() { int...

Преобразовать массив таким образом, чтобы сначала располагались все элементы, которые равняются нулю, потом остальные
Преобразовать массив таким образом, чтобы сначала располагались все элементы, которые равняются нулю, а потом - все остальные. ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru