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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2011, 22:02   #1
Иван91
Новичок
Джуниор
 
Регистрация: 12.04.2011
Сообщений: 2
Вопрос матрицы

подскажите кто нибудь решение пожалуйста.
Дана прямоугольная матрица. Найти строку с наибольшей суммой элементов.
Поменять местами столбец с максимальным элементом на главной диагонали со столбцом с заданным номером m.

заранее спасибо если кто нибудь отзовется
Иван91 вне форума Ответить с цитированием
Старый 14.04.2011, 07:43   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Разве у прямоугольной матрицы бывает главная (или вообще какая бы то ни было) диагональ?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 14.04.2011, 08:27   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

ну главная вроде да, бывает
1 0 0
0 1 0
0 0 1
0 0 0
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 14.04.2011, 13:29   #4
Иван91
Новичок
Джуниор
 
Регистрация: 12.04.2011
Сообщений: 2
По умолчанию

если я не ошибаюсь элементами главной диагонали являются те у которых i=j
Иван91 вне форума Ответить с цитированием
Старый 14.04.2011, 15:24   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

не ошибаетесь
проходитесь по строкам в цикле, во вложенном цикле суммируете элементы строки, находите строку с максимальной суммой
проходитесь по столбцам, находите тот, у которого элемент на диагонали максимальный, в цикле меняете элементы этого столбца и столбца m

в чем проблема то?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 14.04.2011, 22:40   #6
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Код:
#include<iostream>
#include<time.h>
using namespace std;
void Init(int **mas,int n,int m)
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			mas[i][j]=rand()%20+1;
		}
	}
}
void Show(int **mas,int n,int m)
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cout<<mas[i][j]<<"\t";
		}
		cout<<endl;
	}
	cout<<"\n\n";
}
void Max_str(int **mas,int n,int m)
{
	int max=0,t=0,s=0;
	for(int i=0;i<n;i++)
	{
		t=0;
		for(int j=0;j<m;j++)
		{
			t+=mas[i][j];
		}
		if(t>max)
		{
			max=t;
			s=i+1;
		}
	}
	cout<<"\t\tМаксимальная строка номер "<<s<<" с суммой элементов "<<max<<"\n\n";
}
void Perestanovka(int **mas,int n,int m,int v)
{
	int max=mas[0][0],s=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(i==j)
			{
				if(mas[i][j]>max)
				{
					max=mas[i][j];
					s=i;
				}
			}
		}
	}
	if(s==(v-1))
	{
		cout<<"\t\tИзменений не будет, Вы выбрали один и тот же столбец\n\n";
		return;
	}
	int *temp=new int[n];
	for(int i=0;i<n;i++)
	{
		temp[i]=mas[i][s];
		mas[i][s]=mas[i][v-1];
		mas[i][v-1]=temp[i];
	}
	cout<<"\t\tБыли поменяны "<<v<<" и "<<s+1<<" столбцы\n\n";
	delete[]temp;
}
void main()
{
	int n=0,m=0,v=0;
	setlocale(LC_CTYPE, "Rus");
	srand((unsigned)time(NULL));
	cout<<"\t\tВведите колличество столбцов\n\n";
	cin>>m;
	cout<<"\t\tВведите количество строк\n\n";
	cin>>n;
	cout<<"\t\tВведите столбец с номером m\n\n";
	for(bool x=0;x==0;)
	{
		cin>>v;
		if(v<=m)
			x=1;
		else
			cout<<"\t\tВсего "<<m<<" столбцов, а Вы ввели "<<v<<" \n\n\t\tповторите ввод\n\n";
	}
	int **arr=new int *[n];
	for(int i=0;i<n;i++)
		arr[i]=new int[m];
	Init(arr,n,m);
	Show(arr,n,m);
	Max_str(arr,n,m);
	Perestanovka(arr,n,m,v);
	Show(arr,n,m);
	for(int i=0;i<n;i++)
		delete[]arr[i];
	delete[]arr;
}

Последний раз редактировалось Trust_357; 14.04.2011 в 23:05.
Trust_357 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TurboPascal: графы, матрицы смежности и матрицы инцидентности. ulala Помощь студентам 1 03.03.2011 19:28
Ф-ия, определяющая сумму строк матрицы, если на главной диагонали матрицы имеется отрицательный эл-т. Volk_xD Помощь студентам 6 05.01.2011 13:39
Матрицы:функция изменения порядка столбцов матрицы Fajyz Помощь студентам 0 13.01.2010 09:40
На главную диагональ матрицы поместить наибольшие элементы этой матрицы mivel Помощь студентам 2 23.12.2009 21:19