Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
#1

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

24.12.2007, 11:38. Просмотров 1142. Ответов 5
Метки нет (Все метки)

Дана целая матрица размера (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);
}
Не получается сделать сортировку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2007, 11:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка (C++):

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется - C++
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом? - C++
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

Быстрая сортировка (сортировка Хоара) для связных списков - C++
есть у кого готовый алгоритм? или подскажите как реализовать

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива - C++
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Немогу понять как устоновить...

Сортировка Шелла и пирамидальная сортировка для символов - C++
Здраствуйте, можете пожалуйста привести пример сортировок шелла и пиромидальной сортировки для символов, а то ничего не могу ...

Быстрая сортировка (сортировка методом Хоара) - C++
Ввести массив x1,x2,...,x20 в диапазоне . Требуется расположить отрицательные элементы в порядке убывания. Вывести массивы до и после...

5
Lord_Voodoo
Супер-модератор
8594 / 2211 / 61
Регистрация: 07.03.2007
Сообщений: 10,766
Завершенные тесты: 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;
      }
  }
}
0
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);
}
0
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]);

Но что-то не работает, подскажите в чём ошибка.
0
Lord_Voodoo
Супер-модератор
8594 / 2211 / 61
Регистрация: 07.03.2007
Сообщений: 10,766
Завершенные тесты: 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");
}
0
srjk
0 / 0 / 0
Регистрация: 23.12.2007
Сообщений: 24
25.12.2007, 14:54  [ТС] #6
Спасибо
0
25.12.2007, 14:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2007, 14:54
Привет! Вот еще темы с ответами:

C/C++ FAQ :: Быстрая сортировка (сортировка Хоара) - C++
Вопрос, скорее академический, по мотивам реализации. Вот в faq приведена реализация этого метода сортировки на C++. В коде есть следующий...

2 сортировки: пирамидальная сортировка и сортировка слиянием - C++
Реализовать два улучшенных алгоритма сортировки. Для каждого алгоритма вычислить показатель качества сортировки (количество операций, т.е....

Сортировка вектора по полю(Сортировка вставками) - C++
Здравствуйте! Нужно написать сортировку вектора по полю weight класса tomato. Вот класс: #pragma once #include &lt;iostream&gt; ...

Сортировка Шелла и сортировка вставками - C++
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.