Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 29.03.2019
Сообщений: 12

Поменять местами соседние строки матрицы

27.01.2020, 21:47. Показов 2023. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Windows Forms.
Две таблицы, в одну пользователь вводит матрицу, нажимает кнопку выполнить, программа меняет местами строки и выводит в другую таблицу. Как поменять местами 1 строку со 2, 3 с 4?
dataGridView1 - первая таблица
dataGridView2 - вторая.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    //выполнить
private: System::Void buttonResult_Click(System::Object^  sender, System::EventArgs^  e) {
    this->dataGridView2->RowCount = 0;
    this->dataGridView2->ColumnCount = 0;
    this->dataGridView2->RowCount = dataGridView1->RowCount;
    this->dataGridView2->ColumnCount = dataGridView1->ColumnCount;
    this->dataGridView1->Columns[this->dataGridView1->ColumnCount - 1]->Width = this->dataGridView1->Rows[0]->Height;
 
    for (int i = 0; i < this->dataGridView2->ColumnCount; i++)
    {
        this->dataGridView2->Columns[i]->Width = this->dataGridView2->Rows[0]->Height;
    }
 
    for (int i = 0; i < dataGridView1->RowCount+1; i++)
    {
        for (int j = 0; j < dataGridView1->ColumnCount; j++)
        {
            this->dataGridView2->Rows[dataGridView1->RowCount - i - 1]->Cells[j]->Value = this->dataGridView1->Rows[i]->Cells[j]->Value;
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.01.2020, 21:47
Ответы с готовыми решениями:

Поменять местами соседние столбцы матрицы
Задание гласит: в двумерном массиве из целых чисел поменять местами столбцы последовательно. Уже есть код:int ** create (int n, int m){ ...

Если в матрице найдутся 2 соседние строки, которые состоят из четных элементов — поменять строки местами
Задание: Если в матрице найдутся 2 соседние строки, которые состоят из четных элементов - поменять строки местами #include...

Массив: поменять местами соседние строки двумерного массива
Написать программу, которая случайным образом заполняет двумерный массив размером 6х6 цифрами от 0 до 10. Воспользовавшись одномерным ...

4
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
28.01.2020, 14:42
Sahitomo,
вот в первом приближении, с колокольни сишки:
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
private: System::Void buttonResult_Click(System::Object^  sender, System::EventArgs^  e) {
    /// Пока dataGridView2 нам не нужен.
    //this->dataGridView2->RowCount    = dataGridView1->RowCount;
    //this->dataGridView2->ColumnCount = dataGridView1->ColumnCount;
    
 
    ///------------------------------------------------------------------------|
    /// Меняем строки местами.
    ///------------------------------------------------------------------------:
    for     (int i = 0; i < dataGridView1->RowCount-1;  i+=2)
    {   for (int j = 0; j < dataGridView1->ColumnCount; j++ )
        {
            ///------------------------------------------------------|
            /// Лучше конеш заюзать swap(.., ..);
            ///------------------------------------------------------:
            auto temp = this->dataGridView1->Rows[i + 1]->Cells[j]->Value;
            
            this->dataGridView1->Rows[i + 1]->Cells[j]->Value = 
                this->dataGridView1->Rows[i]->Cells[j]->Value;
                
            this->dataGridView1->Rows[i]->Cells[j]->Value = temp;
        }
    }
    
    ///------------------------------------------------------------------------|
    /// Здесь ТЕСТ. Выводим и смотрим: поменялись строки местами в dataGridView1
    ///------------------------------------------------------------------------:
    /// TODO:
    ...
зы:
подозреваю, что там с гридами своя особая магия есть ...
типа такого, например:
C#
1
2
3
4
5
6
7
8
9
    ///------------------------------------------------------------------------|
    /// Меняем строки местами.
    ///------------------------------------------------------------------------:
    for(int i = 0; i < dataGridView1->RowCount-1; i+=2)
    {   
            auto temp                        = this->dataGridView1->Rows[i + 1];
            this->dataGridView1->Rows[i + 1] = this->dataGridView1->Rows[i];
            this->dataGridView1->Rows[i]     = temp;
    }
1
1 / 1 / 0
Регистрация: 29.03.2019
Сообщений: 12
29.01.2020, 20:04  [ТС]
Благодарю вас. Получилось, но есть одна проблема, вы не знаете как сделать, чтобы она выводила во вторую таблицу все строки матрицы, я пока не могу придумать
код:
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
private: System::Void buttonResult_Click(System::Object^  sender, System::EventArgs^  e) {
    this->dataGridView2->RowCount = 0;
    this->dataGridView2->ColumnCount = 0;
    this->dataGridView2->RowCount = dataGridView1->RowCount;
    this->dataGridView2->ColumnCount = dataGridView1->ColumnCount;
    this->dataGridView1->Columns[this->dataGridView1->ColumnCount - 1]->Width = this->dataGridView1->Rows[0]->Height;
 
    for (int i = 0; i < this->dataGridView2->ColumnCount; i++)
    {
        this->dataGridView2->Columns[i]->Width = this->dataGridView2->Rows[0]->Height;
    }
 
 
    for (int i = 0; i < dataGridView1->RowCount - 1; i+=2)
    {
        for (int j = 0; j < dataGridView1->ColumnCount; j++)
        {
        
            auto temp = this->dataGridView1->Rows[i]->Cells[j]->Value;
            this->dataGridView2->Rows[i]->Cells[j]->Value = this->dataGridView1->Rows[i+1]->Cells[j]->Value;
            this->dataGridView1->Rows[i]->Cells[j]->Value = temp;
        }
    }
 
}
Миниатюры
Поменять местами соседние строки матрицы  
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
29.01.2020, 20:23
Лучший ответ Сообщение было отмечено Sahitomo как решение

Решение

Цитата Сообщение от Sahitomo Посмотреть сообщение
я пока не могу придумать
попробуйте:
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
private: System::Void buttonResult_Click(System::Object^  sender, System::EventArgs^  e) {
    /// Готови dataGridView2:
    this->dataGridView2->RowCount    = dataGridView1->RowCount;
    this->dataGridView2->ColumnCount = dataGridView1->ColumnCount;
    
 
    ///------------------------------------------------------------------------|
    /// Меняем строки местами.
    ///------------------------------------------------------------------------:
    for     (int i = 0; i < dataGridView1->RowCount-1;  i+=2)
    {   for (int j = 0; j < dataGridView1->ColumnCount; j++ )
        {
            ///------------------------------------------------------|
            /// Лучше конеш заюзать swap(.., ..);
            ///------------------------------------------------------:
            auto temp = this->dataGridView1->Rows[i + 1]->Cells[j]->Value;
            
            this->dataGridView1->Rows[i + 1]->Cells[j]->Value = 
                this->dataGridView1->Rows[i]->Cells[j]->Value;
                
            this->dataGridView1->Rows[i]->Cells[j]->Value = temp;
            
            
            ///------------------------------------------------------|
            /// Копируем первую таблицу во вторую.
            ///------------------------------------------------------:
            this->dataGridView2->Rows[i]->Cells[j]->Value = 
                this->dataGridView1->Rows[i]->Cells[j]->Value;
            this->dataGridView2->Rows[i+1]->Cells[j]->Value = 
                this->dataGridView1->Rows[i+1]->Cells[j]->Value;
        }
    }
    
    ///------------------------------------------------------|
    /// Смотрим что там у нас получилось
    /// в dataGridView1 и dataGridView2
    ///------------------------------------------------------:
    ...
имейте ввиду мой ответ это ответ сишника,
я ничаво не знаю про С++/CLR


Добавлено через 3 минуты
зы:
на скриншоте я понятие не имею где там у вас первая таблица, а где вторая и
после каких манипуляций.
1
1 / 1 / 0
Регистрация: 29.03.2019
Сообщений: 12
29.01.2020, 20:24  [ТС]
Большое вам спасибо, все работает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2020, 20:24
Помогаю со студенческими работами здесь

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

Если в матрице найдутся две соседние строки, которые состоят из четных элементов, поменять их местами
Отладка идет, результат не верный. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; int...

У матрицы с размером M*N поменять местами строки с наибольшим и наименьшим элементом местами
Всем привет, подскажите пожалуйста. Как в Windows Form у матрицы с размером M*N поменять местами строки с наибольшим и наменьшим элементом...

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

Поменять соседние слова местами
задание: Дано предложение. Вывести его на экран, меняя местами каждые два соседних слова. Никак не могу сообразить что нужно делать,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru