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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2011, 20:06   #1
apraxie
 
Регистрация: 05.11.2011
Сообщений: 8
Восклицание Сортировка пузырьком строк массива

Задано количество строк и столбцов прямоугольного массива и значения его элементов. Отсортировать строки массива по следующему критерию: сравниваются первые элеметы строк, при их равенстве- вторые и т.д

Реализовать на Си

вот отрывок сортировки пузырьком


Код:
x=0;
 
for(k=0; k<strings; k++)//sortirovka puzyrkom
       {
         for(i=0; i<(strings-1); i++)
         {
          if(mas[i][0]>mas[i+1][0])
           {
            for(j=0;j<stolbs;j++)
              {
              x=mas[i][j];
              mas[i][j]=mas[i+1][j];
              mas[i+1][j]=x;
              }
           }
         }
       }

надо сделать так, чтобы если например элементы в первом столбце равны, то сортировать по элементам второго столбца и т.д. Подскажите как?

Последний раз редактировалось apraxie; 05.11.2011 в 20:51.
apraxie вне форума Ответить с цитированием
Старый 05.11.2011, 20:15   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Отсортировать по алфавиту что ли? Или по номеру символов?оО
Если по алфавиту и регистр не важен (т.е. Ааа, аба, Баа, а не Ааа, Ба, аба), то разве
Код:
if(mas[i].UpperCase>mas[i].UpperCase)
не будет работать? (не уверен, что правильно написал название функции, возвращающей строку в верхнем регистре).

И используйте тег [CODE] (значок # ) для сохранения форматирования и подсветки кода в сообщении. Кнопка Правка снизу справа.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 05.11.2011 в 20:38.
Alex11223 вне форума Ответить с цитированием
Старый 05.11.2011, 20:46   #3
apraxie
 
Регистрация: 05.11.2011
Сообщений: 8
По умолчанию сортировка

например задан массив

1 5 7 9
1 5 2 5
1 5 4 3
1 5 6 2

Данный алгоритм сортирут этот массив по первому элементу строк, а так как они равны, то строки не переставляются

Поскольку первые 2 столбца равны, нужно сортировать по третьему столбцу

А моя программа умеет сортировать только по первым элементам строк:

Код:
if(mas[i][0]>mas[i+1][0])
Необходимо проверить, равны ли ли первые элементы строк между собой?
Если все первые элементы строк равны, то сортировать по вторым элементам строк... и тд...

Последний раз редактировалось apraxie; 05.11.2011 в 20:54.
apraxie вне форума Ответить с цитированием
Старый 05.11.2011, 21:14   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Напишите функцию, принимающую два массива и возвращающую булево значение, типа bool IsArrayGreater(char* array, char* then, int length);
2) Вызывайте её из основной программы.
Abstraction вне форума Ответить с цитированием
Старый 05.11.2011, 21:21   #5
apraxie
 
Регистрация: 05.11.2011
Сообщений: 8
По умолчанию

я новичок, мне б еще до функций добраться...
разве нельзя как-то в цикле сортировки сразу проверять на равенство элементов в столбце? чтобы при раверстве перезодил на другой столбец и по его элементам уже строки сортировать?..
apraxie вне форума Ответить с цитированием
Старый 05.11.2011, 22:45   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Примерно так наверно:
Код:
for(k=0; k<strings; k++)
  for(i=0; i<(strings-1); i++)
  {
     int j=0;   
     while ((mas[i][j]==mas[i+1][j]) && (j<stolbs-1))
        j++;
     if(mas[i][j]>mas[i+1][j])
         for(j=0;j<stolbs;j++)
         {
            x=mas[i][j];
            mas[i][j]=mas[i+1][j];
            mas[i+1][j]=x;
        }
   }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.11.2011, 23:09   #7
apraxie
 
Регистрация: 05.11.2011
Сообщений: 8
По умолчанию

Большое спасибо. все работает
apraxie вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива пузырьком.АССЕМБЛЕР. RDK1 Помощь студентам 0 30.05.2011 16:01
сортировка массива строк. daruwanov Общие вопросы C/C++ 6 21.09.2010 19:57
сортировка массива строк в Си SpLIne Общие вопросы C/C++ 2 15.04.2010 16:17
Сортировка массива выбором и пузырьком (делфи) kira_truelove Помощь студентам 1 05.12.2009 14:00
Сортировка массива строк StanPBH Помощь студентам 9 24.04.2007 00:34