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

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

13.11.2010, 12:18. Показов 74177. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1 6 7
2 5 8
3 4 9.
Язык программирования Си.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2010, 12:18
Ответы с готовыми решениями:

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

Поменять местами две любые строки матрицы
Дан двумерный массив. Составить программу, которая меняет местами две любые строки массива

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

40
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
13.11.2010, 22:19
Студворк — интернет-сервис помощи студентам
M128K145, вы не в ту степь пошли. По вашему когда в std есть функция swap ею не надо пользоваться, а нужно заменять все кусками "однородного" кода?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.11.2010, 22:58
almazsr, логично, что swap надо использовать не всегда, он удобен, например, для быстрого обмена объектов, а не для таких легких действий. В общем не буду никого ни в чем убеждать, но потом, когда на серьезном проекте с таким столкнетесь, где кода будет не 2 строки, а 102, тогда поймете к чему я это говорил, и как вы потом будете вносить изменения и решать проблемы, вызванные подобными изменениями.

volovzi, вам все равно как будет выглядеть функция внутри? Простите, а вы кто по профессии? Вы разве не программист? Тогда как вы можете говорить, что вам все равно как она выглядит внутри? А кто будет саппортить код потом? Кто будет вносить изменения в код?


Цитата Сообщение от volovzi Посмотреть сообщение
в стандартной библиотеке есть разные функции для степени двойки и произвольной степени.
А где вы увидели степень? Я вообще-то числа просто умножал.
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
13.11.2010, 22:59
Полностью солидарен с M128K145.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
13.11.2010, 23:13
Цитата Сообщение от M128K145 Посмотреть сообщение
volovzi, вам все равно как будет выглядеть функция внутри? Простите, а вы кто по профессии? Вы разве не программист? Тогда как вы можете говорить, что вам все равно как она выглядит внутри? А кто будет саппортить код потом? Кто будет вносить изменения в код?
Это уже эмоции, а не аргументы.

Не надо выдёргивать слова из контекста. Неважно, как выглядит функция с точки зрения единообразности кода. Естественно, желательно, чтобы она легко читалась и понималась. Но и в данном случае читать, понимать и поддерживать своп двух указателей проще, чем цикл с несколькими действиями.

А где вы увидели степень? Я вообще-то числа просто умножал.
Да, невнимательно посмотрел. Тем не менее, пример всё равно плохой.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.11.2010, 23:28
Цитата Сообщение от M128K145 Посмотреть сообщение
но потом, когда на серьезном проекте с таким столкнетесь, где кода будет не 2 строки, а 102
volovzi, ваши действия? Вам удобнее саппортить две функции, выполняющие практически одни и те же действия(отойдем временно от языка С++ и его хранения данных в памяти, потому как например в паскале вы не сможете обменять указатели на строки, т.к. там двумерный массив хранится в памяти линейно), коими и являются обмен строк и столбцов в матрице, которые написаны одинаково и требуют однотипных изменений, или же двух функций, но разных в реализации и, следовательно, разных изменений в коде. При этом могут возникнуть баги(все мы люди). И опять же, в первом случае исправление будет однотипным(полчаса с дебаггером), во втором - по полчаса с дебаггером для каждой функции. А пользователь как раз не заметит разницы - перебросили вы указатели или в цикле обменяли значения, зато вы запомните это надолго(читайте, на протяжении всего проекта)

ЗЫ. никаких эмоций, только хорошие намерения
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
13.11.2010, 23:46
M128K145, от языка Си++ отходить не надо . Здесь обсуждается решение конкретной задачи на конкретном языке.

Между прочим, редактирование нескольких однотипных функций как раз более опасно, чем нескольких разнотипных (что-то сродни антипаттерну copy-paste). Можно легко перепутать, что ты сейчас редактируешь, поставить не тот итератор и т.п. Вот здесь как стоило бы посидеть над каждой функцией. А своп я даже проверять не буду .
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.11.2010, 23:56
volovzi, когда мы начали обсуждать использования способа обмена и методы организации решения - то мы начали обсуждать принципы программирования, а не конкретную задачу на конкретном языке. Я же не зря в начале своего поста поставил цитату, на нее стоит обратить внимание. В этом разделе как бы не только бесплатно решают задачки, тут еще и учатся программированию, поэтому обсуждать отталкиваясь только от свопа и матрицы - не серьезно. Все же ответьте на весь предыдущий пост, не теряя цитаты
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
14.11.2010, 00:19
M128K145, ты в какие-то дебри ушёл. Я утверждаю, что простая в понимании функция, работающая за константное время, лучше, чем более сложная, работающая за линейное.
А размер функции от размера проекта вообще не зависит.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.11.2010, 00:23
volovzi, речь идет о целесообразности применения разных решений для практически одинаковых действий
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
14.11.2010, 00:34
В данном случае это целесообразно, и я уже объяснил почему.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.11.2010, 09:03
volovzi, не буду переубеждать, но столкнетесь - вспомните
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
14.11.2010, 11:28
M128K145, если ты так упрямо не хочешь признаваться, что написал плохой пример, то, может, спросим "зал"? Тут можно опросы делать?
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.11.2010, 11:51
то, может, спросим "зал"? Тут можно опросы делать?
А смысл? Оба приведенных варианта обмена строк правильные и оба могут применяться к матрицам любых размеров и типов. Вариант с swap() более современный и проще в написании. Но и вариант который привел M128K145 тоже нужно знать - т.к. существуют близкие задачи к обмену двух строк, но swap() там уже не сможешь использовать, а подойдет немного переделанный вариант M128K145.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
14.11.2010, 11:58
Цитата Сообщение от valeriikozlov Посмотреть сообщение
А смысл? Оба приведенных варианта обмена строк правильные и оба могут применяться к матрицам любых размеров и типов. Вариант с swap() более современный и проще в написании. Но и вариант который привел M128K145 тоже нужно знать - т.к. существуют близкие задачи к обмену двух строк, но swap() там уже не сможешь использовать, а подойдет немного переделанный вариант M128K145.
Сортировка пузырьком — тоже "правильна" и может применяться к массиву любой размерности. Так почему же ей не пользуются?
Ничего современного в обмене указателей нет. Этот способ — ровесник языка Си.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.11.2010, 12:22
Сортировка пузырьком — тоже "правильна" и может применяться к массиву любой размерности. Так почему же ей не пользуются?
Почему не пользуются, я и сам иногда пользуюсь. Хотя обычно отдаю предпочтение другим сортировкам.
Например вот задача:
Дан массив размером N. Одним обменом называется обмен соседних элементов в массиве. Найдите минимальное кол-во обменов которое нужно совершить чтобы матрица стала упорядоченной по возрастанию.
По-моему для этой задачи как раз подойдет сортировка пузырьком.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
14.11.2010, 12:32
valeriikozlov, ага, принцип я понял.
Задача:
Дана матрица N x M. Обменом строк матрицы называется последовательный обмен соответствующих элементов строки.
Обменять строки под номерами i и j.

Я реально не понимаю, что вы так сопротивляетесь?
Своп указателей в данном случае лучше не только по скорости, но и с соображений семантики.
Цель — обменять строки. Пишем — swap(row1, row2), что с языка Си на русский переводится как обмен двух строк. Проще и понятнее не бывает.
Да, к сожалению, со столбцами так не получается, поэтому приходится городить циклы.
А вы тут целую теорию подвели под своё плохое решение.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.11.2010, 12:42
Цитата Сообщение от volovzi Посмотреть сообщение
Сортировка пузырьком — тоже "правильна" и может применяться к массиву любой размерности.
Опять же вопрос целесообразности. Какой смысл использовать тот же quickSort для массива в 10 элементов, если пузырек намного проще и эффективнее на таких наборах?

volovzi, вы имели опыт реальной разработки, или это то, что вам рассказывают в ВУЗе на лекциях? А то что вы назвали "теорией" - это реальность, с которой вы столкнетесь
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.11.2010, 12:46
Своп указателей в данном случае лучше не только по скорости, но и с соображений семантики.
Я об этом не спорю, наоборот уже писал, что в этих случаях swap() лучше.
Но остаюсь при своем мнении что вариант M128K145 тоже нужный (в других близких задачах лучше будет этот вариант).
А вы тут целую теорию подвели под своё плохое решение.
Я еще никаких решений не выдавал по этому вопросу.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
14.11.2010, 12:54
M128K145, предложение спросить народ в силе.

Цитата Сообщение от valeriikozlov Посмотреть сообщение
Я об этом не спорю, наоборот уже писал, что в этих случаях swap() лучше.
Но остаюсь при своем мнении что вариант M128K145 тоже нужный (в других близких задачах лучше будет этот вариант).
Никаких "близких" задач здесь не рассматривалось. Речь шла о конкретной задаче. Такой вариант обмена строк динамического массива на языке Си или Си++ плох (устал объяснять, почему), а потому не нужен.
0
6 / 6 / 1
Регистрация: 23.12.2012
Сообщений: 131
09.11.2013, 17:52
Познавательно

Добавлено через 1 минуту
Правда поэлементный обмен в динамическом массиве не прокатывает, странно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.11.2013, 17:52

Разработать функцию, позволяющую поменять местами две произвольные строки матрицы
Имеется код: #include <iostream> #include <stdio.h> using namespace std; char **s = new char* , *t; int i, j, n; int main() {...

Как поменять местами две строки матрицы без использования подпрограмм?
Как поменять местами две строки матрицы в C++ без использования подпрограмм?

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

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

В матрице поменять местами две строки с заданными номерами
2)Из элементов полученной матрицы, которые лежат на главной диагонали и под ней, сформировать нижнюю треугольную матрицу С; 3)Из...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru