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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2009, 17:06   #1
HDMI
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 48
По умолчанию Сортировка двумерного массива на C/C++

Доброго время суток. Очень нуждаюсь в вашей помощи. Дано: квадратный массив, пользователь сам выбирает его размер. После нажатии на кнопку он заполняется случайными числами от -99 до 99. Так вот требуется отсортировать по убыванию массив сначала по строкам, а затем эти строки по убыванию первых элементов в строке. То есть строки целиком переставлять. Вот с этим и возникли проблемы. Не представляю как это осуществить, помогите хотя бы алгоритмом.
Код:
for(c=0;c<=(str*stolb);c++)//количество проходов
	{
		//в строках упорядочиваем
		//____________________________________________
       for(i=0;i<str;i++)
         {
	       for(j=0;j<stolb-1;j++)
	        {
		      if(mass[i][j]<mass[i][j+1])
		       {
				 temp=mass[i][j];
				 mass[i][j]=mass[i][j+1];
				 mass[i][j+1]=temp;
		       }
		    }
	     }
       //в столбах упорядочиваем
	   //_____________________________________________
	   for(x=0;x<stolb;x++)
         {
	       for(z=0;z<str-1;z++)
	        {
		      if(mass[z][x]<mass[z][x+1])
		       {
				 temp=mass[z][x];
				 mass[z][x]=mass[z][x+1];
				 mass[z][x+1]=temp;
		       }
		   }
	    }
	 }
Это сортировка по убыванию всего массива. Мне же нужно во 2 проход сортировать только по 1 элементам. И еще вопрос, делаю все это добро в Qt. Так вот, массив будет ввиде таблицы. Как его перегнать в переменную массива?

Последний раз редактировалось HDMI; 04.12.2009 в 17:41.
HDMI вне форума Ответить с цитированием
Старый 04.12.2009, 20:08   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Двумерный массив в Си это просто напросто int ** (ну или какой у Вас там тип), соответственно, mas[i] эквивалентно *(mas+i). Т.е. поменять местами две строки можно так
Код:
int *buf = mas[i];
mas[i] = mas[j];
mas[j] = buf;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива ttjke Помощь студентам 0 01.12.2009 20:03
Сортировка массива по С++ Moldir Общие вопросы C/C++ 1 28.10.2009 17:40
Сортировка массива Helennna Microsoft Office Excel 7 06.08.2009 18:41
Сортировка массива Dagmaria Общие вопросы C/C++ 5 05.07.2008 00:23
Сортировка массива RIO Помощь студентам 1 05.04.2008 17:39