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

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

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

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

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

1 6 7
2 5 8
3 4 9.
Язык программирования Си.
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2010, 12:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять местами две строки матрицы (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
13.11.2010, 12:34 #2
Если массив динамический, то поменять местами указатели, а если статический, то последовательным свопом.
0
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]; //во вторую строку записываем сохраненную первую
1
M128K145
Эксперт С++
8288 / 3508 / 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;
}
1
relok
2 / 2 / 0
Регистрация: 13.11.2010
Сообщений: 25
13.11.2010, 20:50 #5
ну так любой может! =)
0
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.11.2010, 20:55 #6
ну так любой может! =)
Так и сделали бы. Читая посты до M128K145 сложилось впечатление, что так любой не может.
0
relok
2 / 2 / 0
Регистрация: 13.11.2010
Сообщений: 25
13.11.2010, 20:57 #7
я сделал так, чтобы человеку было понятно, что он хочет сделать
а почитав форы и кучу левых переменных - он тупо скопирует, не поняв сути задачи
1
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.11.2010, 21:03 #8
relok, кстати за это вот : Найти сумму всех нечетных трехзначных чисел уважаю. (серьезно, без издевки). Отдельная благодарность от меня.
0
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]);
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.11.2010, 21:08 #10
relok, знаете, насколько я могу судить, люди и Хеллоу Ворлд тупо копируют, не разбираясь, а потом не могут ответить, что это за принтэф там такой...
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
13.11.2010, 21:24 #11
volovzi, а теперь ваш вариант, но только для обмена столбцов
1
relok
2 / 2 / 0
Регистрация: 13.11.2010
Сообщений: 25
13.11.2010, 21:30 #12
valeriikozlov, по моему вы как раз стебетесь над моим топорными методами решения=)
0
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);
    ...
}
1
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
13.11.2010, 21:36 #14
almazsr, спасибо за ответ, но я хочу увидеть ответ volovzi, а ваш код, извините, но ни в какие ворота по перфомансу не лезет
1
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
13.11.2010, 21:41 #15
M128K145, вопрос был про строки. Твой вариант, очевидно, неоптимален для строк. Если используешь указатели, так используй их до конца.
Со столбцами по-другому. Не надо стремиться решить все задачи универсальным способом, иначе выйдет как у "шутника" almazsr'a.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2010, 21:41
Привет! Вот еще темы с ответами:

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

Разработать функцию, позволяющую поменять местами две произвольные строки двухмерного массива - C++
Разработать функцию, позволяющую поменять местами две произвольные строки двухмерного массива. Ввести массив. Поменять два раза по две...

Поменять местами максимальный элемент каждой строки матрицы с первым элементом строки - C++
Написать функцию, которая меняет местами максимальный элемент каждой строки матрицы С(5,5) с первым элементом соответствующей строки.

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.11.2010, 21:41
Ответ Создать тему
Опции темы

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