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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2012, 04:40   #1
drukas
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 11
По умолчанию Работа с матрицей (с++)

В динамической матрице нужно найти максимальный элемент в каждой строке и минимальный элемент в каждом столбце, а потом их вывести в одномерном массиве.
Вроде почти все получается, но есть одна проблема.
Оно выводит ответ несколько раз.
В чем проблема?
Можете помочь?

Код:
int main()
{
	int i,j,m,max,min,size;
	cout<<"enter matrix size:"<<endl;
	cin>>size;
	cout<<'\n'<<"matrix:"<<'\n';
	int *mas=new int[2*size];
	int **mat=new int*[size];
	for(i=0; i<size; i++)
		mat[i]=new int[size];
	for(i=0; i<size; i++)
	{
		for(j=0; j<size; j++)
		{
			mat[i][j]=rand()%10;
			cout<<mat[i][j]<<'\t'<<'\t';
		}
		cout<<'\n'<<'\n';
	}
	cout<<"_______________________________________________________"<<'\n';
	//максимальные элементы в каждой строке
	cout<<"maximal elements:"<<endl;
	for(m=0; m<size; m++)
	{
		for(i=0; i<size; i++)
		{
			max=mat[i][0];
			for(j=0; j<size; j++)
				if(max<mat[i][j])
					max=mat[i][j];
			mas[m]=max;
			cout<<mas[m]<<'\t';
		}
	}
	cout<<'\n'<<"_______________________________________________________"<<'\n';
	//минимальные элементы в каждом столбце
	cout<<"minimal elements:"<<endl;
	for(m=size; m<(2*size); m++)
	{
		for(j=0; j<size; j++)
		{
			min=mat[0][j];
			for(i=0; i<size; i++)
				if(min>mat[i][j])
					min=mat[i][j];
			mas[m]=min;
			cout<<mas[m]<<'\t';
		}	
	}
	cin>>size;
	return 0;
}
Изображения
Тип файла: jpg 111.jpg (78.9 Кб, 47 просмотров)
drukas вне форума Ответить с цитированием
Старый 18.11.2012, 04:44   #2
Adm!n
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 13
По умолчанию

Ошибка явно в циклах.Три раза выводит потому что size ты ввел три, и там он и прокрутил его три раза)

Последний раз редактировалось Adm!n; 18.11.2012 в 04:47.
Adm!n вне форума Ответить с цитированием
Старый 18.11.2012, 04:54   #3
drukas
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 11
По умолчанию

исправил, помогло, спасибо

for(m=size; m<(2*size); m++)
то есть можно записать так
for(m=1; m<=1; m++)

только не могу понять, почему

хм
цикл для m вообще не нужен, но почему?
drukas вне форума Ответить с цитированием
Старый 18.11.2012, 04:57   #4
Adm!n
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 13
По умолчанию

Я сейчас туго соображаю, но зачем тебе вот эти циклы?
for(m=size; m<(2*size); m++)
for(m=0; m<size; m++)

где m короче.И в мин и макс.

так а что такое m вообще?
ты не задавал себе такой вопрос?
оно тут явно ни к чему не относится

Последний раз редактировалось Adm!n; 18.11.2012 в 05:00.
Adm!n вне форума Ответить с цитированием
Старый 18.11.2012, 05:01   #5
drukas
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 11
По умолчанию

пытался вспомнить, для чего их писал
но так и не вспомнил, ибо писал еще часов 12 назад

вроде я уже понял, почему так

еще раз спасибо
drukas вне форума Ответить с цитированием
Старый 18.11.2012, 05:03   #6
Adm!n
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 13
По умолчанию

Пробовал убирать эти циклы?работает?
в первом цикле ты заполняешь матрицу числами, во втором берешь строку и прокручиваешь ее,в третьем прокручиваешь столбец,а m тут совсем не причем.
Adm!n вне форума Ответить с цитированием
Старый 18.11.2012, 05:19   #7
drukas
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 11
По умолчанию

а можно как-то создать массив из этих максимальных-минимальных значений, а потом его вывести?
drukas вне форума Ответить с цитированием
Старый 18.11.2012, 05:22   #8
Adm!n
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 13
По умолчанию

Цитата:
Сообщение от drukas Посмотреть сообщение
а можно как-то создать массив из этих максимальных-минимальных значений, а потом его вывести?
амм,чтобы mas[i]+mas[j] = mas[q] например?
короче из двух массивов создать один?
Adm!n вне форума Ответить с цитированием
Старый 18.11.2012, 05:28   #9
drukas
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 11
По умолчанию

в том смысле, что тут я сразу нахожу максимальное в строке и сразу же вывожу
и так со всеми строками-столбцами

а как-нибудь, что бы эти значения поочередно в массив засунуть и уже после этих циклов вывести
drukas вне форума Ответить с цитированием
Старый 18.11.2012, 05:30   #10
Adm!n
Пользователь
 
Регистрация: 18.11.2012
Сообщений: 13
По умолчанию

зачем такие сложности?
Adm!n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицей С# Diman410 Помощь студентам 1 29.03.2011 16:47
Работа с матрицей Иги Помощь студентам 2 21.01.2011 00:03
работа с матрицей AleksENN Помощь студентам 0 23.10.2010 14:13
Работа с матрицей Absent Помощь студентам 2 05.04.2009 15:46
Работа с матрицей Absent Помощь студентам 1 24.05.2008 13:33