На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Сортировка строк
    Кинти, пожалуйста, исходник сортировки строк (можно только из латиницы) методом рампределения (радиксным) или ссылку. Спасибо.
      Это опять я. Вот я тут написал что-то, но оно неправильно работает. В чем здесь причина?
      #include <stdio.h>
      #include <memory.h>
      #include <string.h>
      #include <conio.h>

      #define N 30

      char *array[20], *sorted_array[20];
      int count = 0;

      void sort_strs();

      void main()
      {
          clrscr();
          puts("Enter some string (empty string to finish):");
          char s[N], *ps;

          while (1)
          {
             gets(s);
             if (!*s)
                  break;
             s[ strlen(s) ] = '\0';
             ps = new char [strlen(s) + 1 ];
             strcpy(ps, s);
             array[ count++ ] = ps;
          }

          printf("You have entered \%d strings", count);

          sort_strs();

          puts("Sorted array is");

          int i;

          for (i = 0; i < count; i++)
             puts(sorted_array[i]);

          getch();

          for (i = 0; i < count; i++)
             delete []array[ i ];
      }

      void sort_strs()
      {
          int distr[256];
          int index[256];

          for (int k = 0; k < N; k++)
          {
             memset(&distr, 0, sizeof(distr));
             memset(&index, 0, sizeof(index));
             *index = 0;
             int i;

             for (i = 0; i < count; i++)
                  distr[ array[ i ][ k ] ]++;

             for (i = 1; i < 255; i++)
                  index[ i ] = index[ i - 1] + distr[ i - 1 ];

             for (i = 0; i < count; i++)
                  sorted_array[ index[ array[ i ][ k ] ] ] = array[ i ];
          }
      }

      Например, если вводить
      bcc
      bab
      baa
      abc
      caa,
      то программа сортирует их несовсем правильно. По первой букве - все хорошо, но дальше уже не то.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0189 ]   [ 15 queries used ]   [ Generated: 27.04.24, 21:18 GMT ]