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

QSort для строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка LINK http://www.cyberforum.ru/cpp-beginners/thread733010.html
error LNK1123: failure during conversion to COFF: file invalid or corrupt Не знаю из-за чего такая ошибка может быть, пытался скомпилить 2 проекта один из них 100% рабочий и на обеих этапах...
C++ Где скачать Borlan С++ Начал изучать системное программирование. Дали на паре решить задачу дома,уже второй день роюсь не могу найти где скачать Borlan С++ на windows7-64bit. Кто сможет скиньте ссылку! Заранее спасибо!!! http://www.cyberforum.ru/cpp-beginners/thread733006.html
Источники информации C++
Я интересуюсь Java и знаю, что есть хорошие сообщества, которые предоставляют интересный материал, например такие как jug.ru. Вопрос: какие похожие сообщества есть у C++ разработчиков?
Описать конструктор объекта C++
1. На экран выводятся натуральные числа (до n) в случайном порядке и степень, в которую нужно возвести число (1-3). Пользователь должен ввести результат возведения предложенного числа в данную...
C++ Поиск элемента http://www.cyberforum.ru/cpp-beginners/thread732996.html
Программа считает сколько минимально раз подряд встречается элемент х в массиве #include <iostream> using namespace std; int main() { int a={ 5, 5, 3, 5, 5, 5, 8, 8, 9}; ...
C++ Создание виртуального диска Здравствуйте! Подскажите пожалуйста, каким образом создать виртуальный диск для программы, которая моделирует файловую систему? подробнее

Показать сообщение отдельно
Rengen
3 / 3 / 0
Регистрация: 15.01.2012
Сообщений: 67

QSort для строк - C++

15.12.2012, 22:10. Просмотров 481. Ответов 0
Метки (Все метки)

Работает не верно. Нельзя использовать стркутуры, классы.
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
void SAlphabetSort(char* String, int iLo, int iHi)      //Алгоритм Хоара
{
    //границы подмножества
    int Lo = iLo;
    int Hi = iHi;
 
    while(*(String + Hi) == ' ' || *(String + Hi) == '\0' || *(String + Hi) == '\n')        //поиск конца слова
        if(Hi)      //выбор слова в правом подмножестве
            Hi--;
    while(*(String + Hi) != ' ' && *(String + Hi) != '\0' && *(String + Hi) != '\n')        //пропуск слова
        Hi--;
    Hi++;       //Установить на начало слова.
 
    while(*(String + Lo) == ' ' || *(String + Lo) == '\0' || *(String + Lo) == '\n')        //поиск начала слова
        Lo++;   //выбор начала слова левого подмножества
 
    int MidWord = Lo;
    while(*(String + MidWord) != ' ' && *(String + MidWord) != '\0' && *(String + MidWord) != '\n')     //пропуск слова
        MidWord++;
    while(*(String + MidWord) == ' ' || *(String + MidWord) == '\0' || *(String + MidWord) == '\n')     //поиск начала слова
        MidWord++;      //выбор слова для сравнения
    do
    {
        //поиск слова ближайшего к началу
        while(!cmpWordsinString(String, MidWord, Lo))
        {
            while(*(String + Lo) != ' ' && *(String + Lo) != '\0' && *(String + Lo) != '\n')        //поиск следующего слова
                Lo++;
            while(*(String + Lo) == ' ' || *(String + Lo) == '\n')      //поиск начала слова
                Lo++;   //выбор начала слова левого подмножества
        }
        //поиск слова ближайшего к концу
        while(cmpWordsinString(String, MidWord, Hi))
        {
            if(Hi)
                Hi--;
            else
                break;
            while(*(String + Hi) == ' ' || *(String + Hi) == '\n')      //пропуск пробелов
                if(Hi)  
                    Hi--;
                else
                    break;
            while(*(String + Hi) != ' ' && *(String + Hi) != '\0' && *(String + Hi) != '\n')        //поиск начала слова
                if(Hi)      //выбор слова в правом подмножестве
                    Hi--;
                else
                    break;
            if(Hi)
                Hi++;   //Установить на начало слова.
        }
        if(Lo <= Hi)        //если слова найдены
        {
            ExchangeWords(String, Lo, Hi);  //поменять слова местами
            while(*(String + Lo) != ' ' && *(String + Lo) != '\0' && *(String + Lo) != '\n')        //поиск начала слова
                Lo++;   //выбор следующего слова левого подмножества
            Lo++;
            Hi--;
            while(*(String + Hi) == ' ' || *(String + Hi) == '\n')      //пропуск пробелов
                if(Hi)  
                    Hi--;
                else
                    break;
            while(*(String + Hi) != ' ' && *(String + Hi) != '\0' && *(String + Hi) != '\n')        //поиск начала слова
                if(Hi)      //выбор слова в правом подмножестве
                    Hi--;
                else
                    break;
            if(Hi)
                Hi++;       //Установить на начало слова.
        }
    }while(Lo <= Hi);
    if(GetWordsNumber(String) <= 2)
        return ;
    //вызов для левой части множества
    if(Hi > iLo) 
        SAlphabetSort(String + iLo, 0, Hi - iLo);
    //вызов для правой части множества
    if(Lo < iHi) 
        SAlphabetSort(String + Lo, 0, iHi - Lo);
}
Я бы и по другому справился, однако в задании необходимо использовать рекурсивный метод сортировки.
Сам знаю, где-то накосячил, однако дебаг уже не помогает. Буду очень признателен за подсказку или решение проблемы.
0
Вложения
Тип файла: rar BAaP_LB6.rar (767.4 Кб, 2 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru