Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2014, 12:44   #1
Мики6277
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 32
По умолчанию Задача с двумерным массивом С++

Дана квадратная матрица. С помощью перестановок добиться того, чтобы её максимальный элемент находился в верхнем левом углу, следующий по величине в позиции (2.2) и т.д. Таким образом необходимо заполнить все главную диагональ.
Подскажите, как рациональнее сделать это.
Мики6277 вне форума Ответить с цитированием
Старый 21.11.2014, 14:55   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Код:
for (int m = 0; m < n; m++)
	{
		for (int w = 0; w < n; w++)
		{
			for (int h = 0; h < n; h++)
			{
				if ((w == h) && (w < m))
				{
					continue;
				}

				if (A[m][m] < A[w][h])
				{
					t = A[m][m];
					A[m][m] = A[w][h];
					A[w][h] = t;
				}

			}
		}
	}
Smogg вне форума Ответить с цитированием
Старый 21.11.2014, 21:27   #3
Мики6277
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Smogg Посмотреть сообщение
Код:
for (int m = 0; m < n; m++)
	{
		for (int w = 0; w < n; w++)
		{
			for (int h = 0; h < n; h++)
			{
				if ((w == h) && (w < m))
				{
					continue;
				}

				if (A[m][m] < A[w][h])
				{
					t = A[m][m];
					A[m][m] = A[w][h];
					A[w][h] = t;
				}

			}
		}
	}
Расскажи, пожалуйста, как это работает)
m и w - счетчики в первых двух циклах отвечают за строки и столбцы матрицы. А за что отвечает h?
Мики6277 вне форума Ответить с цитированием
Старый 21.11.2014, 21:27   #4
Мики6277
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Smogg Посмотреть сообщение
Код:
for (int m = 0; m < n; m++)
	{
		for (int w = 0; w < n; w++)
		{
			for (int h = 0; h < n; h++)
			{
				if ((w == h) && (w < m))
				{
					continue;
				}

				if (A[m][m] < A[w][h])
				{
					t = A[m][m];
					A[m][m] = A[w][h];
					A[w][h] = t;
				}

			}
		}
	}
Расскажи, пожалуйста, как это работает)
m и w - счетчики в первых двух циклах отвечают за строки и столбцы матрицы. А за что отвечает h?
Мики6277 вне форума Ответить с цитированием
Старый 21.11.2014, 23:00   #5
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

m - main diagonal
w - width
h - height

пробегаем по всем клеткам, и если в рассматриваемом элементе глав. диагонали (за исключение вышестоящих по диагонали) значение меньше, то меняемся.
Smogg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ задача с двумерным массивом nnina Помощь студентам 0 01.03.2012 19:15
Задача , связанная с двумерным массивом stas135642 Общие вопросы C/C++ 5 14.11.2010 16:18
Задача с двумерным массивом. svobodys Паскаль, Turbo Pascal, PascalABC.NET 0 14.12.2008 18:09
Задача с двумерным массивом. svobodys Помощь студентам 3 13.12.2008 15:44
задача с двумерным массивом Ras Помощь студентам 1 22.12.2007 19:58