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

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

07.10.2018, 13:10. Показов 1608. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Столкнулся со следующей проблемой:
Необходимо создать матрицу, размера n x m с генератором случайных чисел.
Это, я, собственно, сделал.
Суть проблемы вот в чём: необходимо отсортировать эту матрицу так, чтобы все положительные элементы стояли в левой верхней части матрицы,идя сверху-вниз, а не положительные (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
#include "pch.h"
#include <iostream>
#include <ctime> 
using namespace std;
int main()
{
    srand(time(NULL)); // Обновить последовательность случайных чисел
    setlocale(LC_ALL, "Russian");
    int arr[50][50]; //Максимальный размер матрицы
    int n; //Количество строк
    int m; //Количество столбцов
    cout << "Введите количество n строк: " << endl;
    cin >> n;
    if (n > 50)
    {
        cout << "Пожалуйста, введите значение < 50: " << endl;
        return main();
    }
    else
    {
        cout << "Введите количество столбцов m: " << endl;
        cin >> m;
    }
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            arr[i][j] = rand() % (100) - 50; //Генератор случайных чисел от -50 до 100, заполнение
        }
    }
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << arr[i][j] << "\t"; //Табуляция между элементами строк и столбцов
        }
        cout << endl; // Вывод исходного массива
    }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2018, 13:10
Ответы с готовыми решениями:

Сортировка: разместить все положительные элементы в левой верхней области матрицы
Сделать программу, которая вводит матрицу с целыми числами з n рядков и m столбцов (1&lt;n&lt;=100, 1&lt;m&lt;=50) и сортирует елементы...

Отсортировать массив, чтобы все положительные чётные элементы стояли в начале массива
Добрый вечер! Дан линейный массив A, который содержит целые числа. Отсортировать его таким образом: 1) чтобы все положительные чётные...

Отсортировать массив, чтобы все положительные чётные элементы стояли в начале массива
Добрый вечер! Дан линейный массив A, который содержит целые числа. Отсортировать его таким образом: 1) чтобы все положительные элементы в...

5
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.10.2018, 18:53
Morsis, неужели сложно сообщить оригинал условия задачи ?
Вам нужно отсортировать двумерный массив по убыванию или переставить положительные вверх, отрицательные и нули вниз, сохраняя порядок их расположения в начальном массиве ?
0
1 / 1 / 0
Регистрация: 03.11.2017
Сообщений: 53
07.10.2018, 23:30  [ТС]
Разместить все положительные элементы в верхнюю левую область матрицы, (заполняя ими матрицу по столбцам сверху-вниз) а не положительные - в правую нижнюю область
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.10.2018, 00:32
Цитата Сообщение от Morsis Посмотреть сообщение
Разместить все положительные элементы в верхнюю левую область матрицы, (заполняя ими матрицу по столбцам сверху-вниз) а не положительные - в правую нижнюю область
Morsis, это можно сделать:
ВАРИАНТ A) сортировкой (порядок элементов не сохранится, элементы будут отсортированы по убыванию).
ВАРИАНТ B) перестановкой (порядок элементов сохранится - положительные будут расположены в том порядке как были расположены в первоначальном массиве, аналогично отрицательные и нули).
ВАРИАНТ C) перестановка без сохранения порядка - рассматривать не будем.

Это совсем разные коды в зависимости от задачи.

Какой вариант Вам нужен ? Если не можете сформулировать, сбросьте 2 матрицы - начальную и ту, которую нужно получить.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
08.10.2018, 04:05
Лучший ответ Сообщение было отмечено Morsis как решение

Решение

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
    bool done = false;
    int pos_i=0, pos_j = 0;
    int neg_i = n-1, neg_j = m -1;
 
    while (!done)
    {
        while (arr[pos_i][pos_j] > 0 && !done)
        {
            ++pos_i;
            if (pos_i == n) {
                pos_i = 0;
                ++pos_j;
            }
            done = (pos_i == neg_i && pos_j == neg_j);
        }
        while (arr[neg_i][neg_j] <= 0 && !done)
        {
            --neg_i;
            if (neg_i == -1) {
                neg_i = n - 1;
                --neg_j;
            }
            done = (pos_i == neg_i && pos_j == neg_j);
        }
        swap(arr[pos_i][pos_j], arr[neg_i][neg_j]);
    }
1
1 / 1 / 0
Регистрация: 03.11.2017
Сообщений: 53
08.10.2018, 17:59  [ТС]
Решение скинули ниже, спасибо за отклик!

Добавлено через 13 секунд
Спасибо вам огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2018, 17:59
Помогаю со студенческими работами здесь

Отсортировать массив, чтобы все положительные чётные элементы стояли в начале массива
Добрый вечер! Дан линейный массив A, который содержит целые числа. Отсортировать его таким образом: 1) чтобы все положительные элементы...

Изменить последовательность так, чтобы в начале стояли все 0, затем отрицательные, а затем положительные элементы
Дана последовательность целых чисел х1,х2,…,хn. Изменить данную последовательность так, чтобы в начале стояли все 0, затем отрицательные, а...

Изменить последовательность так, чтобы в начале стояли все 0, затем отрицательные, а затем положительные элементы
Дана последовательность целых чисел х1,х2,…,хn. Изменить данную последовательность так, чтобы в начале стояли все нулевые элементы, затем...

Переставить элементы, чтобы все положительные элементы стояли в начале массива, а все отрицательные и нули - в конце
«C»: Заполнить массив случайными числами в интервале и переставить элементы так, чтобы все положительные элементы стояли в начала...

Распределить элементы массива так, чтобы сначала стояли положительные, а потом отрицательные
Даны целые числа n одномерного массива. Полная программа на c++.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru