Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
8 / 7 / 9
Регистрация: 17.10.2009
Сообщений: 105
1

Отсортировать строки массива по следующему критерию

14.11.2010, 18:10. Показов 772. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задано количество строк и столбцов прямоугольного массива и значения его элементов. Отсортировать строки массива по следующему критерию: сравниваются первые элеметы строк, при их равенстве- вторые и т.д., например есть массив:
2 3 5 7 9
1 2 3 4 5
3 8 7 4 5
2 3 4 6 2
1 1 2 4 2
0 1 2 3 4
3 8 7 4 2
в итоге должно выйти:
0 1 2 3 4
1 1 2 4 2
1 2 3 4 5
2 3 4 6 2
2 3 5 7 9
3 8 7 4 2
3 8 7 4 5
то есть по принципу телефонного справочника если есть две фамилии на одну букву то они упорядочиваются по второй и т.д. например
Аа
Аб
Ав
...
помогите реализовать сортировку
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
void main(void)
{
 int i,j,m,n,a[15][15],b,k;
 clrscr();
 printf("vvedite kolichestvo strok\n");
 scanf("%i",&m);
 printf("vvedite kolichestvo stolbcov\n");
 scanf("%i",&n);
 if ((m < 16)&&(n < 16))
  {
   clrscr();
   for(i=0;i<m;i++)
    {
     for(j=0;j<n;j++)
     {
      printf("vvedite %i element massiva %i stroki\n",j+1,i+1);
      scanf("%i",&a[i][j]);
     }
    }
     b=0;
   printf("ishodnyi massiv\n");
   for(i=0;i<m;i++)
    {
     for(j=0;j<n;j++)
      printf(" %i",a[i][j]);
      printf("\n");
     }
       /* сортировка не правильная
for(k=1;k<2*m;k++)
       {
     for(i=1;i<m;i++)
       {
     for(j=0;j<n;j++)
     {
      if(a[i][j]<a[i-1][j])
       {
        for(j=0;j<n;j++)
          {
          b=a[i][j];
          a[i][j]=a[i-1][j];
          a[i-1][j]=b;
          }
       }
     }
       }   }*/
     printf("uporadocheniy massiv\n");
   for(i=0;i<m;i++)
    {
     for(j=0;j<n;j++)
      printf(" %i",a[i][j]);
      printf("\n");
     }
 }
else
printf(" vixod za granitsi masiva");
getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2010, 18:10
Ответы с готовыми решениями:

Сформировать двумерный массив по следующему правилу: количество строк массива считывается с 2 позиции 3 строки
№ 21. Дан текстовой файл, сформированный по следующему правилу: первые две строки содержат...

Отсортировать и вывести на отдельный лист по критерию
Ребята всем привет:) Есть изначальные данные четыре столбца А - Дата; В-Контрагент; С-Товар;...

Отсортируйте строки таблицы в первую очередь по первому критерию, при равенстве по первому критерию, отсортируйте по второму
Задача готова, надо найти мелкий баг. Есть прямоугольная таблица, содержащая слова. Каждые ее...

Необходимо отсортировать массив полученных строк по заданному критерию
Добрый день уважаемые форумчане! Хотел бы попросить вашей помощи в решении моей лабораторной...

7
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.11.2010, 06:37 2
строки массива можно менять местами с помощью memcpy()

а у тебя всё дело в повторении j
используй i, j, k, ...
1
8 / 7 / 9
Регистрация: 17.10.2009
Сообщений: 105
15.11.2010, 08:24  [ТС] 3
все равно сортировка не правильная, он получается упорядочивает строки по последнем столбцу
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.11.2010, 09:01 4
Ну так поменяй порядок учёта столбцов.
1
8 / 7 / 9
Регистрация: 17.10.2009
Сообщений: 105
15.11.2010, 10:13  [ТС] 5
в итоге получилось:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
void main(void)
{
 int i,j,m,n,a[15][15],b,k,l;
 clrscr();
 printf("vvedite kolichestvo strok\n");
 scanf("%i",&m);
 printf("vvedite kolichestvo stolbcov\n");
 scanf("%i",&n);
 if ((m < 16)&&(n < 16))
  {
   clrscr();
   for(i=0;i<m;i++)
    {
     for(j=0;j<n;j++)
     {
      printf("vvedite %i element massiva %i stroki\n",j+1,i+1);
      scanf("%i",&a[i][j]);
     }
    }
     b=0;
   printf("ishodnyi massiv\n");
   for(i=0;i<m;i++)
    {
     for(j=0;j<n;j++)
      printf(" %i",a[i][j]);
      printf("\n");
     }
       for(k=1;k<105;k++)
       {
     for(i=1;i<m;i++)
       {
     for(j=(n-1);j>=0;j--)
     {
      if(a[i][j]<a[i-1][j])
       {
        for(l=0;l<n;l++)
          {
          b=a[i][l];
          a[i][l]=a[i-1][l];
          a[i-1][l]=b;
          }
       }
     }
       }   }
     printf("uporadocheniy massiv\n");
   for(i=0;i<m;i++)
    {
     for(j=0;j<n;j++)
      printf(" %i",a[i][j]);
      printf("\n");
     }
 }
else
printf(" vixod za granitsi masiva");
getch();
}
всем спасибо за помощь))
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.11.2010, 10:24 6
а k < 105 - это что ?
0
8 / 7 / 9
Регистрация: 17.10.2009
Сообщений: 105
15.11.2010, 15:10  [ТС] 7
Цитата Сообщение от accept Посмотреть сообщение
а k < 105 - это что ?
это то количество сравнений строк которое должна совершить программа чтоб упорядочить массив 15 на 15
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.11.2010, 01:18 8
этого не должно быть
0
16.11.2010, 01:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2010, 01:18
Помогаю со студенческими работами здесь

Отсортировать строки двумерного массива по возрастанию первого элемента строки
Прошу помощи. Отсортировать строки двумерного массива по возрастанию первого элемента строки....

Отсортировать строки массива в порядке увеличения среднего арифметического значения каждой строки
Помогите пожалуйста, написать метод сортировки массива (пункт 3) Задание: 1. Создать двумерный...

Отсортировать массив записей по заданному критерию. Написать с использованием подпрограмм.
Пусть дан массив записей, содержащий информацию об автомобилях(гос.номер, марка, категория, объем...

Отсортировать строки массива по убыванию
В текстовом файле в табличном виде расположен массив целых чисел 5*5. Отсортировать каждую строку...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru