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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 23:03   #1
Игорь777
Пользователь
 
Регистрация: 04.12.2008
Сообщений: 33
По умолчанию Помогите пожалуйста с матрицами. С++

Дана целочисленная матрица NxM.
С каждой строкой нужно сделать следующее:
- Сначала найтив ней максимум.
- Затем сдвинуть влево все не равные максимуму числа, сохранив их порядок. Числа, равные максимуму, остаются справа.
- Если в получившейся строке меньше, чем i чисел (где i - номер строки), то строка полностью заполняется нулями.Иначе все числа, равные максимуму, сдвигаются влево так, что первое из них помещается на i-тую позицию.
Например, в строке 1 3 2 3 максимум равен 3. После преобразования получается строка 1 2 3 3. Далее максимумы 3 3 сдвигаются влево до позиции 1. В результате получается 3 3 1 2.
Первая строка входного файла содержит два натуральных числа N и M (1<N,M<100). Далее идет N строк по M целых чисел в каждой. Все числа по модулю не превосходят 1000000.
В выходной файл выведите первоначальную и окончательную матрицы.


Буду очень благодарен, если поможете! Три часа сидел, ничего путного не получил(
Игорь777 вне форума Ответить с цитированием
Старый 30.04.2009, 12:22   #2
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Цитата:
Например, в строке 1 3 2 3 максимум равен 3. После преобразования получается строка 1 2 3 3.
Это можно сделать при помощи сортировки. Вот два алгоритма.

Выбора.

Код:
void sort_vid(int *mas,int size){
	int i,j,max,maxc=0,tmp;
	for(i=size-1;i>0;i--){
		max=mas[0];
		maxc=0;
		for(j=0;j<=i;j++){
			if(mas[j]>max){
				maxc=j;
				max=mas[j];
			}
		}
		tmp=mas[i];
		mas[i]=mas[maxc];
		mas[maxc]=tmp;
	}
	for(i=0;i<size;i++){
		printf("%4d",mas[i]);
	}
}
И вставки.

Код:
void sort_vst(int *mas,int size){
	int i,tmp,j;
	for(i=1;i<size;i++){
		if(mas[i]<mas[i-1]){
			for(j=i;j>0;j--){
				if(mas[j-1]>mas[j]){
					tmp=mas[j-1];
					mas[j-1]=mas[j];
					mas[j]=tmp;
				}
			}
		}
	}
	for(i=0;i<size;i++){
		printf("%4d",mas[i]);
	}
}
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста с решением задач с матрицами очень прошу Денисько54 Помощь студентам 18 04.03.2009 11:35
работа с векторами и матрицами. помогите пожалуйста решить задачу. владимир/к. Паскаль, Turbo Pascal, PascalABC.NET 1 28.01.2009 10:45
помогите разобраться с матрицами LyaLyaLya Помощь студентам 12 03.12.2008 16:21
помогите с матрицами плиз Darkstar Помощь студентам 2 16.11.2008 16:13
Помогите с матрицами Сапфира Помощь студентам 2 14.10.2008 11:03