Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка строк по алфавиту. Структуры. 
V
    Опции темы
Kruger2
Дата 14.7.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Известная задача, в интернете есть много вариантов, но я не могу нормально реализовать сортировку по алфавиту. 
Вот условие: 

1.    Описать структуру с именем ТRAIN, содержащую следующие поля:
•    NAZN - название пункта назначения;
•    NUMR - номер поезда;
•    ТIМЕ - время отправления.
2.    Написать программу, выполняющую следующие действия:
•    ввод с клавиатуры данных в массив RASР, состоящий из восьми элемен¬тов типа ТRAIN; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
•    вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени;
•    если таких поездов нет, выдать на дисплей соответствующее сообщение.



Вот задача:

Код

#include <stdio.h>
#include <string.h>
struct TRAIN{
       char NAZN[20];
       unsigned NUMR;
       char TIME[6];
       } RASP[8],T;
       
main()
{
  int i, j, k=0; 
  unsigned Num; 
  char Name[20];

/*Ввод и считывание информации*/
   for(i=0; i<8; i++)
   {
    printf("\nName of the place? "); 
    scanf("%s", &RASP[i].NAZN); 
     
     if(strlen(RASP [i].NAZN)==0)
          break;
   
    printf("Train number? ");
    scanf("%u",&RASP[i].NUMR);
    
    printf("Departure time? "); 
    scanf("%s",&RASP[i].TIME);
    
     k++;
     };
     
     /*Тут должна быть сортировка. Тут и нужна помощь:)*/
   
       /*Вывод результатов*/
        printf("\nTrains:\n"); 
         for(i=0; i<k; i++)
         printf("%-19s - #%3u - %7s\n",RASP[i].NAZN,RASP[i].NUMR,RASP[i].TIME);
        while(1)
        {
           printf("\nTrain number for seach (0 for exit)? "); 
           scanf("%u",&Num); 
           j=0; 
           
            if(!Num)
           break;
           
             for(i=0;i<k;i++)
           if(Num==RASP[i].NUMR)
             {
             printf("\nName of the place: %s \nTrain number: %u \nDeparture time: %s\n\n", 
                     RASP[i].NAZN,RASP[i].NUMR,RASP[i].TIME);
             j=1;
             }; 
             
            
     if(!j)
       printf("No such train!\n"); 
 getchar();}
}




Каким образом создать сортировку? Допустим будут строки:

London
Astana
Moscow
Kiev

Надо раскидать их по алфавиту, от а к z. 

Если рассматривать как двумерный массив, то мне необходимо сравнивать первый элемент 1ой строки с первым элементов 2ой , если он больше, то поднять вверх всю строку и т.д. Но у меня массив NAZN(название города) объявлен как одномерный. У меня вообще нет тут двумерного массива, что бы попробовать пузырьковою конструкцию типа: 
 
Код

for(i=0; i<k; i++)
   for(j=0; j<k; j++)
if (matrix[0][j] < matrix [0] [j+1])
 t=matrix[0][j]
matrix[0][j+1]=matrix [0][j]
matrix [0][j+1]=t


Или в этом случае я зафиксировал вообще нулевой элемент и надо вот так? Но всё равно у меня нет двухмерного массива и я не могу сравнивать именно нулевой элемент каждой строки ((
Код

for(i=0; i<k; i++)
   for(j=0; j<k; j++)
if (matrix[0][j] < matrix [0] [j+1])
 t=matrix[j]
matrix[j+1]=matrix [j]
matrix [j+1]=t



 

Это сообщение отредактировал(а) Kruger2 - 14.7.2011, 16:53
PM MAIL   Вверх
boostcoder
Дата 14.7.2011, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



юзай std::vector и std::sort smile 
PM WWW   Вверх
Kruger2
Дата 14.7.2011, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



boostcoder
Находил такие примеры, но я как бы не должен их ещё знать на этой стадии, хотя в общих чертах понимаю как работают ониsmile

Добавлено через 1 минуту и 18 секунд
Хотя нет, вектор не знаю вообще)
PM MAIL   Вверх
boostcoder
Дата 14.7.2011, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



используй qsort(). это Си-функция для сортировки.
PM WWW   Вверх
Kruger2
Дата 14.7.2011, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Да, только по программе эта задача идет перед функциями и тем более перед указателямиsmile Неужели нет вариантов? как отсортировать например по номеру поезда я знаю, а по алфавиту как?)

Это сообщение отредактировал(а) Kruger2 - 14.7.2011, 17:02
PM MAIL   Вверх
boostcoder
Дата 14.7.2011, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(Kruger2 @  14.7.2011,  17:01 Найти цитируемый пост)
Неужели нет вариантов?

вариантов куча. но это руками все писать придется...
PM WWW   Вверх
Kruger2
Дата 14.7.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Тут сортировка происходит в зависимости от номера поезда:

Код

 for(i=0; i<k; i++)
      for(j=0; j<k-i-1; j++)
        if(RASP[i].NUMBER < RASP[j].NUMBER) 
        {
           T= RASP[j];
          RASP[j] = RASP[j+1];
          RASP[j+1]=T;
        }


33
22
44
11

Не совсем понимаю каким образом тут происходит сортировка. Получается, i=строки, j= столбцы? Тогда каким образом строка сравнивается со столбцом О_о

Добавлено через 27 секунд
boostcoder
Пичалька  smile 
PM MAIL   Вверх
borisbn
Дата 14.7.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Kruger2, в твоём одномерном массиве нет ни столбцов ни строк. Есть просто индекс.
Для лучшего понимания распечатай каждый шаг алгоритма (все переменные):
Код

 for(i=0; i<k; i++)
 {
     for(j=0; j<k-i-1; j++)
     {
        printf( "Сравниваю %d и %d элементы\n", i, j );
        printf( "RASP[i].NUMBER = %d, RASP[j].NUMBER = %d\n", RASP[i].NUMBER, RASP[j].NUMBER );
        if(RASP[i].NUMBER < RASP[j].NUMBER) 
        {
           printf( "if(RASP[i].NUMBER < RASP[j].NUMBER). Меняем их местами\n" );
           T= RASP[j];
           RASP[j] = RASP[j+1];
           RASP[j+1]=T;
        }
        printf( "После очередного шага:\n" );
        for ( int tmp = 0; tmp < k; tmp++ )
        {
             printf( "%d ", RASP[ tmp ].NUMBER );
        }
        printf( "\n" );
     }
 }



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Kruger2
Дата 14.7.2011, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Наплевал на всё и сделал как вы и советовали, boostcoder, через strcmp. Никто ведь не запрещает мне наперед учиться? Буду так и говоритьsmile Тем более, что функция элементарна


Код

 if(strcmp(RASP[j].NAZN, RASP[j+1].NAZN)>0)
            {
              T=RASP[j];
              RASP[j]=RASP[j+1];
              RASP[j+1]=T    ;                  
            }

PM MAIL   Вверх
boostcoder
Дата 14.7.2011, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Kruger2, малаца!
PM WWW   Вверх
borisbn
Дата 14.7.2011, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Kruger2, вот, посмотри алгоритмы сортировки. Только не бездумно копипасть, а внимательно разбери... Плюс можешь повставлять отладочный вывод, как я тебе показал выше...


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Kruger2
Дата 14.7.2011, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



borisbn
Спасибо, надо убегать, позже обязательно разберу.
boostcoder
Тоже спасибо за наводку.

Нафлужу ещё пару постов и расставлю плюсы всемsmile
PM MAIL   Вверх
fish9370
Дата 16.7.2011, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



вобще, strcmp реализуется довольно легко, не обязательно использовать библиотечную:

Код

int my_strcmp(const char *s1, const char *s2) {
       if(!s1 && s2)
                return -1;

        if(s1 && !s2)
                return 1;

        if(!s1 && !s2)
                return 0;

        for(;*s1 && *s2; s1++, s2++) {
                if(*s1 != *s2) {
                        if(*s1 > *s2)
                                return 1;
                        else
                                return -1;
                }
        }

        if (*s1)
                return 1;

        if (*s2)
                return -1;

        /*  1 - s1 greater then s2   */
        /* -1 - s1 less then s2      */
        /*  0 - s1 and s2 equal      */
        return 0;
}




Это сообщение отредактировал(а) fish9370 - 16.7.2011, 15:53


--------------------
undefined
PM MAIL WWW ICQ   Вверх
volatile
Дата 16.7.2011, 11:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(fish9370 @  16.7.2011,  10:16 Найти цитируемый пост)
        while(*s1) {
                if(*s1++ != *s2++) {
                        if(*s1 > *s2)
                                return 1;
                        else
                                return -1;
                        break;
                }

smile Это не просто кривой велосипед, это очень кривой велосипед!
1.
Цитата(fish9370 @  16.7.2011,  10:16 Найти цитируемый пост)
                if(*s1++ != *s2++) {
                        if(*s1 > *s2)
                }


Сначала мы проверили на не равенство *s1 != *s2, а потом сравниваем следующие за ними байты
Автор нужно срочно читать что такое постинкрементация.


Если даже исправим ошибку 1, это еще не все
2.
Цитата(fish9370 @  16.7.2011,  10:16 Найти цитируемый пост)
        while(*s1) {

Если s2 длиннее s1, но совпадает по начальным символам, этот код выдаст равенство.
напр: 
s1 = "ABC";
s2 = "ABCDEFG";
Эти строки будут равны.


Уважаемые велосипедисты, когда изобретаете очередной велосипед, будьте осторожны!
Не пишите всякой фигни, где в среднем на 2 строчки кода по 3 ошибки!!!


PM MAIL   Вверх
fish9370
Дата 16.7.2011, 15:57 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



volatile,  не нравишься ты мне  smile 


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 16.7.2011, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



я конечно ничего против Си не имею... но когда видишь такой код от сишника, начинаешь задумываться...таки не плюсы виноваты.
PM WWW   Вверх
fish9370
Дата 16.7.2011, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(boostcoder @  16.7.2011,  16:01 Найти цитируемый пост)
но когда видишь такой код от сишника


код я уже исправил, только не надо делать вид, что вы все никогда не ошибаетесь.. вместо того чтобы сказать, что в коде есть ошибки, типа исправь, он включает высокомерие (это я о предыдущем постере)




--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 16.7.2011, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(fish9370 @  16.7.2011,  16:14 Найти цитируемый пост)
только не надо делать вид, что вы все никогда не ошибаетесь.

все ошибаются.

смысл в другом...
PM WWW   Вверх
fish9370
Дата 16.7.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(boostcoder @  16.7.2011,  16:16 Найти цитируемый пост)
смысл в другом...


а в чем?


--------------------
undefined
PM MAIL WWW ICQ   Вверх
borisbn
Дата 16.7.2011, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(boostcoder @  16.7.2011,  16:01 Найти цитируемый пост)
я конечно ничего против Си не имею... но когда видишь такой код от сишника, начинаешь задумываться...таки не плюсы виноваты.

http://www.progz.ru/t134/ (1-й анекдот)


fish9370, вместо того, чтобы спасибо сказать

Цитата(fish9370 @  16.7.2011,  15:57 Найти цитируемый пост)
volatile,  не нравишься ты мне

не нравится - не ешь


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
fish9370
Дата 16.7.2011, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(borisbn @  16.7.2011,  16:43 Найти цитируемый пост)
вместо того, чтобы спасибо сказать


сказал бы, если бы он не был таким  smile 


--------------------
undefined
PM MAIL WWW ICQ   Вверх
volatile
Дата 16.7.2011, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(fish9370 @  16.7.2011,  10:16 Найти цитируемый пост)
int my_strcmp(const char *s1, const char *s2) {
       if(!s1 && s2)
                return -1;

        if(s1 && !s2)
                return 1;

        if(!s1 && !s2)
                return 0;

        for(;*s1 && *s2; s1++, s2++) {
                if(*s1 != *s2) {
                        if(*s1 > *s2)
                                return 1;
                        else
                                return -1;
                }
        }

        if (*s1)
                return 1;

        if (*s2)
                return -1;

        /*  1 - s1 greater then s2   */
        /* -1 - s1 less then s2      */
        /*  0 - s1 and s2 equal      */
        return 0;
}


Цитата(fish9370 @  16.7.2011,  16:14 Найти цитируемый пост)
. вместо того чтобы сказать, что в коде есть ошибки, типа исправь


И после исправления в коде есть грубые ошибки!
fish9370, типа исправь, может с 3-раза получится.. smile 



PM MAIL   Вверх
fish9370
Дата 16.7.2011, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(volatile @  16.7.2011,  17:04 Найти цитируемый пост)
И после исправления в коде есть грубые ошибки


присвети меня мистер  smile 

Это сообщение отредактировал(а) fish9370 - 16.7.2011, 17:46


--------------------
undefined
PM MAIL WWW ICQ   Вверх
Dov
Дата 16.7.2011, 17:47 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Код
int my_strcmp(const char * s1, const char * s2)
{
    for( ; *s1 && *s2; s1++, s2++)
        if(*s1 != *s2)
            break;
        
    return *s1 - *s2;    
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
volatile
Дата 16.7.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(fish9370 @  16.7.2011,  17:24 Найти цитируемый пост)
да, опять не учел постфиксный инкримент.. спасибо мистер    

да пожалуйста, только дело не в постфиксном инкрименте, а в том что строки теперь никогда не будут равны.

Цитата(volatile @  16.7.2011,  17:04 Найти цитируемый пост)
        if (*s1)
                return 1;

        if (*s2)
                return -1;

        /*  1 - s1 greater then s2   */
        /* -1 - s1 less then s2      */
        /*  0 - s1 and s2 equal      */
        return 0;
}


Здесь никогда не дойдет до         return 0;
!!!
PM MAIL   Вверх
fish9370
Дата 16.7.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(volatile @  16.7.2011,  17:52 Найти цитируемый пост)
Здесь никогда не дойдет до         return 0;


да вы что? а это почему?  smile 


--------------------
undefined
PM MAIL WWW ICQ   Вверх
volatile
Дата 16.7.2011, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



fish9370, А хотя да. сорри.

PM MAIL   Вверх
fish9370
Дата 16.7.2011, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



мистер  smile ошибся? 
не переживай, я не буду над тобой глумиться..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
volatile
Дата 16.7.2011, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(Dov @  16.7.2011,  17:47 Найти цитируемый пост)
int my_strcmp(const char * s1, const char * s2)
{
    for( ; *s1 && *s2; s1++, s2++)
        if(*s1 != *s2)
            break;
        
    return *s1 - *s2;    
}

Dov, неплохо, только надо сделать что-то типа return sign(*s1 - *s2);

PM MAIL   Вверх
fish9370
Дата 16.7.2011, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Dov, классный код, но как же проверки на NULL?


--------------------
undefined
PM MAIL WWW ICQ   Вверх
volatile
Дата 16.7.2011, 18:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(fish9370 @  16.7.2011,  18:03 Найти цитируемый пост)
не переживай, я не буду над тобой глумиться.. 

fish9370, я не хотел не над кем глумиться. Я просто хотел сказать что изобретать велосипед дело не хорошее.
Если я вас чем-то обидел, прошу прещения.
Библиотеки создавали не лохи. И не к чему изобретать его снова и снова.
Можно нарваться на большие неприятности.

PM MAIL   Вверх
boostcoder
Дата 16.7.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



volatile, истину говоришь!
PM WWW   Вверх
fish9370
Дата 16.7.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(volatile @  16.7.2011,  18:13 Найти цитируемый пост)
Я просто хотел сказать что изобретать велосипед дело не хорошее


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

что библиотеки создают не лохи, это правда, но часто стандартные функции оборачивают в обертки..

я за мирный диалог, мне хочется делать ошибки и чтобы за это меня в дерьмо лицом не тыкали, так надоело мериться пиписьками..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
Dov
Дата 16.7.2011, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(volatile @  16.7.2011,  18:04 Найти цитируемый пост)
Dov, неплохо, только надо сделать что-то типа return sign(*s1 - *s2);

извиняюсь, недопонял...

Цитата(fish9370 @  16.7.2011,  18:05 Найти цитируемый пост)
Dov, классный код, но как же проверки на NULL?

Ну это это же просто пример, а не рабочий вариант. Кому надо, пусть проверяет. 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
JackYF
Дата 18.7.2011, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162




M
JackYF
fish9370 и volatile: будьте спокойнее, не "задевайте" друг друга.




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Masha7
Дата 19.7.2011, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 19.7.2011

Репутация: нет
Всего: нет



просто примени qsort(). это Си-функция для четкой сортировки.











________________________________________________________________________________________

Мой любимый новостной портал


Это сообщение отредактировал(а) Masha7 - 15.8.2011, 14:02
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1344 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.