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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2017, 21:35   #1
Evgenyke
 
Регистрация: 08.12.2017
Сообщений: 7
По умолчанию Перестановка строк и столбцов в двумерном массиве

Дана задача: Дана квадратная матрица порядка n. С помощью перестановок строк и
столбцов добиться того, чтобы один из элементов матрицы, обладающий
наибольшим по модулю значением, располагался в левом верхнем углу
матрицы.
Я нашёл её максимальный элемент и позицию,подскажите как загнать её в верхний левый угол,не понял этого
Код:
#include "stdafx.h"
#include <iostream>
#include <time.h>
#define N 10
int n = 10;
int m = 10;
int a[N][N];
int max;
int rij[100], kolom[100];
int k = 0;
int main()
{
	printf("Ishodnaya Matrica : \n");
	srand(time(NULL));
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			a[i][j] = rand() % 30;
			printf("%5d" , a[i][j]);
		}
		printf("\n");
	}

	//отыскание наибольшего элемента матрицы 

	max = a[0][0];

	for (int i = 0; i<n; ++i)
	{
		for (int j = 0; j<n; ++j)
		{
			if (a[i][j]>max)
			{
				max = a[i][j];
			}
		}
	}
	printf("max: %5d ",max);
	//Нахождение позиций наибольшего элемента (когда их несколько и они одинаковы) 

	for (int i = 0; i<n; ++i)
	{
		for (int j = 0; j<n; ++j)
		{
			if (a[i][j] == max)
			{

				rij[k] = ++i;
				kolom[k] = ++j;
				++k;

				--i;
				--j;
			}
		}
	}

	
	return 0;
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.12.2017 в 01:06.
Evgenyke вне форума Ответить с цитированием
Старый 24.12.2017, 16:33   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
#include <algorithm>

// ........ часть твоего кода

inline void swap_columns(const int f, const int s)
{
   for(int i = 0; i<N; ++i)
   {
      std::swap(a[i][f],a[i][s]);
   }
}
inline void swap_rows(const int f, const int s)
{
   for(int i = 0; i<N; ++i)
   {
      std::swap(a[f][i],a[s][i]);
   }
}
int main()
{
 //...  тут ввод
 // Ищем максимум
 int max_i = 0, max_j = 0; // индексы максимума
 for (int i = 0; i<n; ++i)
	{
		for (int j = 0; j<n; ++j)
		{
			if (a[i][j]>a[max_i][max_j])
			{
				max_i = i;
                                max_j = j;
			}
		}
	}
   
   // Перенос строк и столбцов
   swap_columns(0, max_j);
   swap_rows(0, max_i);
   
  // Вывод сделай сам
}
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 24.12.2017 в 16:36.
New man вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление столбцов в двумерном массиве kotbanka Помощь студентам 0 30.11.2017 21:15
В двумерном массиве A из m строк и n столбцов найти сумму всех элементов и заменить на нули элементы на главной диагонали. Григорий 0512 Помощь студентам 0 16.07.2017 13:43
Поиск элементов строк и столбцов в двумерном массиве msemenikhin Общие вопросы C/C++ 0 25.04.2015 19:04
Поиск и перестановка в двумерном массиве (С#) hock Помощь студентам 1 18.01.2015 16:46
Сортировка столбцов в двумерном массиве Obsidian2010 Помощь студентам 1 25.12.2012 11:18