Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 105, средняя оценка - 4.92
Oliga_19
5 / 5 / 0
Регистрация: 28.11.2009
Сообщений: 25
#1

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

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

1 6 7
2 5 8
3 4 9.
Язык программирования Си.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2010, 12:18     Поменять местами две строки матрицы
Посмотрите здесь:
Поменять местами две любые строки матрицы C++
C++ Поменять местами две заданные строки матрицы
Поменять местами две средние строки матрицы с первой и последней C++
C++ Разработать функцию, позволяющую поменять местами две произвольные строки матрицы
Двумерный массив: поменять местами две строки C++
Двумерный массив: поменять местами две строки C++
C++ В матрице поменять местами две строки с заданными номерами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
13.11.2010, 12:34     Поменять местами две строки матрицы #2
Если массив динамический, то поменять местами указатели, а если статический, то последовательным свопом.
relok
2 / 2 / 0
Регистрация: 13.11.2010
Сообщений: 25
13.11.2010, 12:40     Поменять местами две строки матрицы #3
если бездумно и безпошадно:

C++
1
2
3
4
5
6
7
8
int m[3][3]={
{1, 6, 7},
{2, 5, 8},
{3, 4, 9}};
int tmp[3]={m[0][0],m[0][1],m[0][2]}; //сохраняем первую строку
 
m[0][0]=m[1][0];m[0][1]=m[1][1];m[0][2]=m[1][2]; //в первую строку записываем вторую строку
m[1][0]=tmp[0];m[1][1]=tmp[1];m[1][2]=tmp[2]; //во вторую строку записываем сохраненную первую
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
13.11.2010, 19:56     Поменять местами две строки матрицы #4
Oliga_19, вот так это делается в цивилизованном мире
C++
1
2
3
4
5
6
7
8
9
int i, firstRow, secondRow, rowCount, columnCount, tempCell;
int** matr;
// ввод и создание массива
for(i = 0; i < columnCount; ++i)
{
    tempCell = matr[firstRow][i];
    matr[firstRow][i] = matr[secondRow][i];
    matr[secondRow][i] = tempCell;
}
relok
2 / 2 / 0
Регистрация: 13.11.2010
Сообщений: 25
13.11.2010, 20:50     Поменять местами две строки матрицы #5
ну так любой может! =)
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.11.2010, 20:55     Поменять местами две строки матрицы #6
ну так любой может! =)
Так и сделали бы. Читая посты до M128K145 сложилось впечатление, что так любой не может.
relok
2 / 2 / 0
Регистрация: 13.11.2010
Сообщений: 25
13.11.2010, 20:57     Поменять местами две строки матрицы #7
я сделал так, чтобы человеку было понятно, что он хочет сделать
а почитав форы и кучу левых переменных - он тупо скопирует, не поняв сути задачи
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.11.2010, 21:03     Поменять местами две строки матрицы #8
relok, кстати за это вот : Найти сумму всех нечетных трехзначных чисел уважаю. (серьезно, без издевки). Отдельная благодарность от меня.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
13.11.2010, 21:06     Поменять местами две строки матрицы #9
M128K145, не знаю, как в вашем, а в нашем цивилизованном мире это делается так:
C
1
2
3
int ** matrix;
...
swap(matrix[oneRow], matrix[anotherRow]);
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.11.2010, 21:08     Поменять местами две строки матрицы #10
relok, знаете, насколько я могу судить, люди и Хеллоу Ворлд тупо копируют, не разбираясь, а потом не могут ответить, что это за принтэф там такой...
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
13.11.2010, 21:24     Поменять местами две строки матрицы #11
volovzi, а теперь ваш вариант, но только для обмена столбцов
relok
2 / 2 / 0
Регистрация: 13.11.2010
Сообщений: 25
13.11.2010, 21:30     Поменять местами две строки матрицы #12
valeriikozlov, по моему вы как раз стебетесь над моим топорными методами решения=)
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
13.11.2010, 21:32     Поменять местами две строки матрицы #13
Цитата Сообщение от M128K145 Посмотреть сообщение
volovzi, а теперь ваш вариант, но только для обмена столбцов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void transp(int** a, int** b, int n, int m)
{
    int** result=new int*[n];
    for(int i=0; i<n; i++)
    {
        result[i]=new int[m];
        for(int j=0; j<m; j++)
        {
            result[i][j]=a[j][i];
        }
    }
}
 
void main()
{
    ...
    transp(matrix,tr,n,m);
    swap(tr[i], tr[j]);
    transp(tr,matrix,n,m);
    ...
}
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
13.11.2010, 21:36     Поменять местами две строки матрицы #14
almazsr, спасибо за ответ, но я хочу увидеть ответ volovzi, а ваш код, извините, но ни в какие ворота по перфомансу не лезет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2010, 21:41     Поменять местами две строки матрицы
Еще ссылки по теме:
C++ Разработать функцию, позволяющую поменять местами две произвольные строки двухмерного массива
C++ Поменять местами максимальный элемент каждой строки матрицы с первым элементом строки
C++ Обменять местами две заданные строки матрицы
C++ Если в матрице найдутся две соседние строки, которые состоят из четных элементов, поменять их местами
В функции, для каждой строки матрицы M[n][k], максимальный элемент поменять местами с первым элементом строки C++

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

Или воспользуйтесь поиском по форуму:
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
13.11.2010, 21:41     Поменять местами две строки матрицы #15
M128K145, вопрос был про строки. Твой вариант, очевидно, неоптимален для строк. Если используешь указатели, так используй их до конца.
Со столбцами по-другому. Не надо стремиться решить все задачи универсальным способом, иначе выйдет как у "шутника" almazsr'a.
Yandex
Объявления
13.11.2010, 21:41     Поменять местами две строки матрицы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru