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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2009, 23:48   #1
bodrik
 
Аватар для bodrik
 
Регистрация: 17.12.2009
Сообщений: 4
По умолчанию Помогите с матрицой плз

Подскажите пожалуйста код на C как отсортировать матрицу по невозрастанию элементов побочной диагонали??
есть вот такое предложение,но они слишком муторное,напишите пожалйста проще,если это возможно...
Код:
for (i = 0; i < n; i++) 
    {
        x = a[i][i];
        for (j = i - 1; j >= 0 && a[j][j] < x; j--)
        a[j + 1][j + 1] = a[j][j];
        a[j + 1][j + 1] = x;
bodrik вне форума Ответить с цитированием
Старый 18.12.2009, 00:09   #2
Нур
Пользователь
 
Регистрация: 03.12.2009
Сообщений: 44
По умолчанию

а у тебя этот вариант точно работает правильно???
Нур вне форума Ответить с цитированием
Старый 18.12.2009, 00:17   #3
bodrik
 
Аватар для bodrik
 
Регистрация: 17.12.2009
Сообщений: 4
По умолчанию

Да работает,а мне нужен более простой вариант...
bodrik вне форума Ответить с цитированием
Старый 18.12.2009, 00:20   #4
bodrik
 
Аватар для bodrik
 
Регистрация: 17.12.2009
Сообщений: 4
По умолчанию

вот полный код программы
там еще сначала надо просто всю матрицу по возрастанию расположить
Код:
#include<stdio.h>
#include<stdlib.h>
#define N 3
#define M 3
int main (void)
{
	int a[M][N],i, j, z,x, c,n = N, m = M, tmp, k; 
	printf ("Matrix1\n");
	for (i = 0; i < N; i++)
	{
 		for (j = 0; j < M; j++)
		{
			a[i][j] =  rand()% 36 + 1;
			printf ("%3d", a[i][j]);
		}
		printf ("\n");
	}	
	for(c=0;c<=(M*N);c++)
	{	
		for(i=0;i<N;i++)
		{
			for(j=0;j<M;j++)
			{
				if(j!=N) 
				{
			if(a[i][j+1]<a[i][j]) 
				{
					tmp=a[i][j+1];
         				a[i][j+1]=a[i][j];
         				a[i][j]=tmp;
				}	
			else 
				if ((a[i+1][1]<a[i][j])&&(i!=M))
     					{
        		 			tmp=a[i+1][1];
         					a[i+1][1]=a[i][j];
         					a[i][j]=tmp;
		
					}
				}
			}
		}
	}		      
	printf("\n\nMatrix2\n");
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < M; j++)
			{
				printf("%3d", a[i][j]);
			}
	printf("\n");
	}	
for (i = 0; i < n; i++) 
	{
		x = a[i][i];
		for (j = i - 1; j >= 0 && a[j][j] < x; j--)
		a[j + 1][j + 1] = a[j][j];
		a[j + 1][j + 1] = x;
	}
	printf ("\n\nMatrix3\n");  
	for (i = 0; i < N; i++) 
	{
		for (j = 0; j < M; j++) 
		{
			printf ("%3d", a[i][j]);
		}
		printf ("\n");
	}
	return 0;
}
bodrik вне форума Ответить с цитированием
Старый 18.12.2009, 00:28   #5
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Побочная диагональ не включает элемент [0][0]....
В принципе уже неправильно, плюс я что-то сомневаюсь в твоей сортировке....реши две мини-задачи
1)Найти способ обратиться к побочной диагонали, т.е. [0][3],[1][2],[2][1],[3][0] (для матрицы 4 на 4) - то есть используй наверное первый индекс i, а второй n-i, где n - размерность...
2)Способ сортировки - (например, пузырька)
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с матрицой Dimati87 Помощь студентам 1 02.06.2009 17:56
Помогите с матрицой в Delphi neomaximus Помощь студентам 1 22.03.2009 19:22
проблема с матрицой onded Паскаль, Turbo Pascal, PascalABC.NET 5 28.01.2009 13:21
проблемы с матрицой!!! kommunist Помощь студентам 4 19.10.2007 09:07