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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.97
Rom1ch
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 12
#1

Побочная диагональ матрицы - C++

04.07.2011, 15:51. Просмотров 6210. Ответов 20
Метки нет (Все метки)

Подскажите, как в динамической квадратной матрице поменять элементы главной и побочной диагонали между собой?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2011, 15:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Побочная диагональ матрицы (C++):

Матрица (побочная диагональ) - C++
Создать матрицу, все элементы, которые ниже побочной диагонали сложить и этим числом заменить максимальный элемент матрицы

Двумерный массив. Матричные вычисления. Побочная диагональ - C++
Дан массив действительных чисел размером nхn(n<10). Найти наименьшее из значений элементов побочной диагонали и двух соседних с ней...

Главная диагональ, побочная и наименьшее из значений элементов побочной диагонали - C++
Дан массив действительных чисел размера nxn (n<=10) а) Найти сумму элементов главной и побочной диагоналей. б) Найти наименьшее из...

Найти сумму элементов матрицы и заменить ею главную диагональ матрицы - C++
Вот что я написал: // ConsoleApplication17.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" ...

Дан двумерный массив А(4,4) в виде квадратной матрицы. Составьте программу, обнуляющую побочную диагональ матрицы, если в ней найдется хоть один отриц - C++
Дан двумерный массив А(4,4) в виде квадратной матрицы. Составьте программу, обнуляющую побочную диагональ матрицы, если в ней найдется хоть...

Диагональ двумерной матрицы - C++
Привет всем! На сегодняшний день уже второй раз обращаюсь и мне очень неловко. Но и иначе никак. Задача: Дана матрица С. Вычислить и...

20
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
04.07.2011, 15:55 #2
C++
1
2
for(size_t i = 0; i < N; ++i)
  std::swap(matr[i][i], matr[n - i - 1][n - i - 1]);
0
Rom1ch
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 12
04.07.2011, 20:59  [ТС] #3
делаю так:
for(size_t i = 0; i < n; ++i)
std::swap(matr[i][i], matr[n - i - 1][n - i - 1]);
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%d ",matr[i][j]); cout<<endl;}

Чёто не меняет, выводит ту же исходную матрицу,
вообще мы в универе такой записью (std::swap) не пользовались , т.е. надо как-то через циклы решить без использования (std::swap)
C++ знаю полгода, поэтому туплю...
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
04.07.2011, 21:19 #4
Цитата Сообщение от asics Посмотреть сообщение
std::swap(matr[i][i], matr[n - i - 1][n - i - 1]);
из одной и тойже диагонали значения
может так
C++
1
std::swap(matr[i][i], matr[n - i - 1][ i ]);
Добавлено через 53 секунды
Цитата Сообщение от Rom1ch Посмотреть сообщение
т.е. надо как-то через циклы решить
через цикл и решено

Добавлено через 1 минуту
Цитата Сообщение от Rom1ch Посмотреть сообщение
без использования (std::swap)
если матрица из типов int
То пиши
C++
1
matr[i][i]= matr[n - i - 1][i];
0
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
04.07.2011, 21:21 #5
Цитата Сообщение от ValeryS Посмотреть сообщение
из одной и тойже диагонали значения
Что-то я сомневаюсь в этом.
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
04.07.2011, 21:28 #6
Цитата Сообщение от asics Посмотреть сообщение
Что-то я сомневаюсь в этом.
допустим
n=10
i=0
то
std::swap(matr[0][0], matr[9][9]);
главная диагональ
а при моей записи
std::swap(matr[0][0], matr[9][0]);
столбец один строки разные
т.е разные диагонали
1
asics
Freelance
Эксперт С++
2847 / 1782 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
04.07.2011, 21:35 #7
Да да, пардон, туплю.
0
Rom1ch
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 12
04.07.2011, 21:45  [ТС] #8
Всё, спасибо, я сделал) Через вспомогательный двумерный массив.

Вот конец проги:
for(i = 0; i < n; i++)
for(j=0;j<n;j++)
if (i==j) {zammatr[i][j]=matr[i][i]; matr[i][i]=matr[i][n-i-1]; matr[i][n-i-1]=zammatr[i][j];}

for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%10d ",matr[i][j]); cout<<endl;}
0
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
04.07.2011, 21:48 #9
Rom1ch, зачем через массив, еще и 2х-мерный? Просто переменную, если уж на то пошло.
0
neske
04.07.2011, 21:49
  #10

Не по теме:

жеесть)

0
Rom1ch
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 12
04.07.2011, 21:57  [ТС] #11
Хах, да, можно и через переменную, сам усложняю себе жизнь))
А если не через переменную, то как выглядит текст проги?
0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
04.07.2011, 22:01 #12
Цитата Сообщение от Rom1ch Посмотреть сообщение
А если не через переменную, то как выглядит текст проги?
В смысле, не через переменную? А через что?
0
neske
1501 / 868 / 84
Регистрация: 26.03.2010
Сообщений: 2,973
04.07.2011, 22:02 #13
nameless,
C++
1
2
3
a = a + b;
b = a - b;
a = a - b;
0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
04.07.2011, 22:06 #14
neske, В этом смысле. А то посмотрев реализацию через доп. матрицу, подумал, что автор придумал, еще более извращенные вещи..
0
Rom1ch
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 12
04.07.2011, 22:28  [ТС] #15
a = a + b;
b = a - b;
a = a - b;
классный код, но где он используется и зачем? Ведь проще и нагляднее так:
x=a;
a=b;
b=x;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2011, 22:28
Привет! Вот еще темы с ответами:

Главная диагональ матрицы - C++
Добрый вечер! Есть пару задач, с которыми не могу справиться, помогите плиз... Задача 1 Постановка задачи: Дана целочисленная...

Главная диагональ матрицы - C++
Даны две квадратные матрицы. Напечатать ту из них, которая имеет минимальный &quot;след&quot; (т.е. сумму элементов главной диагонали). Использовать...

Главная диагональ и транспонирование матрицы - C++
Дана целочисленная матрица размерности (n x n) . Если максимальные элементы строк находятся на главной диагонали и образуют не...

Диагональ матрицы с минимальным элементом - C++
Всем добрый день. Задача такова: надо найти в квадратной матрице диагональ с минимальным элементом, заменить элементы этой диагонали...


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

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

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