Форум программистов, компьютерный форум CyberForum.ru

Сортировка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
24.12.2007, 11:38     Сортировка #1
Дана целая матрица размера (n x m),n,m<=10
Упорядочить строки матрицы по невозврастанию значений наибольших элементов строк.
Помогите очень надо.

Вот, что у меня получилось.
Код
#include <stdio.h>
#include <conio.h.>
#include <math.h>
int main()
{
	int a[10][10],n,m,i,j,b[10],c,max[10],k;

	do
	 {
		do
		 {
		   printf("\nVvedite n & m:");
		   scanf("%d%d",&n,&m); 
		 }while(m<1 || m>10);
		 printf("\nVvedite elementi matrici:");
		     for(i=0;i<n;i++)
			 for(j=0;j<m;j++) 
			 scanf("%d",&a[i][j]);
           printf("\nVi vveli matricu:\n\n");
		   for(i=0;i<n;i++)
           {  
			   for(j=0;j<m;j++) 
		       printf("%3.1d",a[i][j]); 
				  printf("\n\n");
           }
		  
		  
		  
		  
		  printf("\nPokaz naibol'wih elementov strok kajdoi iz strok:");
		  for(i=0;i<n;i++)
			  {max[i]=a[i][0];
		  for(j=0;j<m;j++)
			  if(a[i][j]>max[i])
			max[i]=a[i][j];
			  b[i]=max[i];
		  printf("%3.1d",b[i]);}
			  
			  
			  
			  
		  printf("\n\n\n");
for (k=0;k<m-1;k++)
	for (i=0;i<m-k-1;i++)	    
	{	
		if(b[i]>b[i+1])
	{c=b[i];		b[i]=b[i+1];                  b[i+1]=c;
for (j=0;j<n;j++)	{c=a[i][j];	a[i][j]=a[i+1][j];	a[i+1][j]=c;}}}
printf("\nYpor9do4enna9 matrica:\n\n");
for(i=0;i<n;i++)
{  for(j=0;j<m;j++) 
	printf("%3.1d %3.1d ",b[i+1],a[i+1][j]);
		    printf("\n"); }

				
				 
	  printf("\nPress esc to ex1t or press any key to continue!");
     }while(getche()!=27);
}
Не получается сделать сортировку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2007, 11:38     Сортировка
Посмотрите здесь:

C++ сортировка
C++ Сортировка.
C++ сортировка
С++ сортировка C++
Сортировка C++
Сортировка C++
Сортировка C++
C++ Сортировка
Сортировка C++
Сортировка C++
Сортировка C++
C++ Сортировка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
24.12.2007, 16:52     Сортировка #2
вот тебе код примитивной сортировки одномерного массива:
Код
void Sort(int* a, int len){
  int tmp = 0;
  for(int i = 0; i < len; i++)
    for(int j = i + 1; j < len; j++){
      if(a[i] > a[j]){
        tmp = a[j];
        a[j] = a[i];
        a[i] = tmp;
      }
  }
}
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
24.12.2007, 19:38  [ТС]     Сортировка #3
Цитата Сообщение от WooDooMan666 Посмотреть сообщение
вот тебе код примитивной сортировки одномерного массива:
Код
[CODE]void Sort(int* a, int len){
  int tmp = 0;
  for(int i = 0; i < len; i++)
    for(int j = i + 1; j < len; j++){
      if(a[i] > a[j]){
        tmp = a[j];
        a[j] = a[i];
        a[i] = tmp;
      }
  }
}
[/CODE]
Код

Спасибо большое, но я сам разобрался
Надо было сделать вот так:
#include <stdio.h>
#include <conio.h.>
#include <math.h>
int main()
{
	int a[10][10],n,m,i,j,b[10],c,k;

	do
	 {
		do
		 {
		   printf("\nVvedite n & m:");
		   scanf("%d%d",&n,&m); 
		 }while(m<1 || m>10);
		 printf("\nVvedite elementi matrici:");
		     for(i=0;i<n;i++)
			 for(j=0;j<m;j++) 
			 scanf("%d",&a[i][j]);
           printf("\nVi vveli matricu:\n\n");
		   for(i=0;i<n;i++)
           {  
			   for(j=0;j<m;j++) 
		       printf("%3.1d",a[i][j]); 
				  printf("\n\n");
           }
		  printf("\nNaibol'shii element v kajdoi stroke=:\n\n");
		  for(i=0;i<n;i++)
		  {b[i]=a[i][0];
		  for(j=1;j<n;j++)
			  if(a[i][j]>b[i])
				  b[i]=a[i][j];
			  printf("%3.1d",b[i]);
		  printf("\n\n");}
for(k=0;k<n-1;k++)
	for(i=0;i<n-k-1;i++)	    
	{	
	if(b[i]<b[i+1])
	{c=b[i];		
	b[i]=b[i+1];                  
	b[i+1]=c;
for (j=0;j<m;j++)	
{
	c=a[i][j];
	a[i][j]=a[i+1][j];	
	a[i+1][j]=c;
}}}
printf("\nYpor9do4enna9 matrica po ybivaniy:\n\n");
for(i=0;i<n;i++)
{  for(j=0;j<m;j++) 
	printf("%3.1d",a[i][j]);
		    printf("\n");}
	  printf("\nPress esc to ex1t or press any key to continue!");
     }while(getche()!=27);
}
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
25.12.2007, 09:02  [ТС]     Сортировка #4
Подскажите, как сделать, чтобы каждые элеметы, большие 10(по модулю) заменялись на 10, а меньшие или равные 10(по модулю), на номер строки в которой элементы находятся.


Вот попробовал вот так:
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
if(fabs(a[i][j])>10)
a[i][j]=10;
else a[i][j]=j;
printf("%3.1d",a[i][j]);

Но что-то не работает, подскажите в чём ошибка.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
25.12.2007, 11:21     Сортировка #5
Код
for(i=0;i<n;i++)
{
  for(j=0;j<m;j++){
    if(fabs(a[i][j])>10)
      a[i][j]=10;
    else a[i][j]=i;
    printf("%3.1d",a[i][j]);
  }
  printf("\n");
}
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
25.12.2007, 14:54  [ТС]     Сортировка #6
Спасибо
Yandex
Объявления
25.12.2007, 14:54     Сортировка
Ответ Создать тему
Опции темы

Текущее время: 06:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru