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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 18:28   #1
millepetrozza
Пользователь
 
Регистрация: 22.09.2012
Сообщений: 33
По умолчанию Сортировка над главной диагональю

Сортировка вставками элементов над главной диагональю матрицы по возрастанию.
Код:
#include "stdafx.h"
#include "stdlib.h"

int main ()
{
int *ms, i ,j ,i_m ,j_m ,m ,n ,k,i1,j1,f,p,q;			// i_m,j_m - координаты минимального элемента
printf("Vvedite razmernost' massiva x=");			// p,q - инкрементируемые переменные, для просмотра элементов над диагональналью
scanf("%d", &n);
ms=(int *)malloc(n*n*sizeof(int));

printf("Vvedite massiv\n");
for(j=0;j<n;j++)					// Ввод матрицы
{	
	for(i=0;i<n;i++)
	{	
		scanf("%d",ms+j*n+i);
	}
}

for(j=0;j<n;j++)				// Вывод введённой матрицы
{	
	for(i=0;i<n;i++)
	{	
		printf("%3d",*(ms+j*n+i));
	}
	printf("\n");
}

for(j1=0,q=1;j1<n-1;j1++)			// i1,j1 - выбор элемента, заменяемого на минимальный
{	
	
	for(i1=q;i1<n;i1++)
	{
		j_m=j1;
		i_m=i1;
		p=1;
		for(j=j1;j<n-1;j++)	// i,j - поиск минимального элемента
		{
			if(j==j1) 
				i=i1;
			else 
				i=p;
			for(;i<n;i++)
			{
			
				if(*(ms+j*n+i)<*(ms+j_m*n+i_m))
				{
					i_m=i;		// Переписывание координат минимального элемента
					j_m=j;
				}
			}
			p++;
		}
	k=*(ms+j1*n+i1);
	*(ms+j1*n+i1)=*(ms+j_m*n+i_m);		// Замена выбранного элемента на минимальный
	*(ms+j_m*n+i_m)=k;
	}
	q++;
}

printf("\n");
for(j=0;j<n;j++)			// Вывод отсортированной матрицы
{	
	for(i=0;i<n;i++)
	{	
		printf("%3d",*(ms+j*n+i));
	}
	printf("\n");
}
getch();
}
Код компилится, но почему-то работает с ошибкой
millepetrozza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисления среднего арифметического каждого столбца под главной диагональю Павел Шилин Паскаль, Turbo Pascal, PascalABC.NET 2 18.05.2012 00:35
Матрица. Найти минимальный среди положительных, находящихся над главной диагональю, и поменять его с максимальным среди отрицатель Mayers Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2012 22:25
Дана действительная матрица A размерности. Если минимальный элемент матрицы расположен над главной диагональю, а максимальный эл. Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 15 06.03.2012 23:37
Найти мин элемент среди элементов который находится над главной диагональю. 2-х мерный масив bratello41 Общие вопросы C/C++ 0 20.12.2010 13:20
Найти минимум из элементов над главной диагональю Mashinegunner Общие вопросы C/C++ 1 27.11.2009 23:40