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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nosudar
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 43
#1

Сортировка массива указателей на char - C++

23.09.2013, 16:55. Просмотров 642. Ответов 7
Метки нет (Все метки)

Есть массив указателей на char-ы. Нужно отсортировать их по алфавиту. Прошу помочь как можно скорее, если это возможно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2013, 16:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка массива указателей на char (C++):

В чем отличие двумерного массива типа char от массива указателей на char? - C++
В чем отличие двумерного массива типа char и массива указателей на char ?

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть сложить строки и назначить результату...

Сортировка элементов массивов указателей на char - C++
Ни как не получается отсортировать это. Помогите отладить прогу плиз int main() { _getch(); char *arrptrs = {"g","e", ...

Динамическое выделение памяти для массива указателей на char - C++
Доброго времени суток! пытаюсь выделить память для массива указателей на char следующий код #include <iostream> #include <string.h>...

Как сделать вывод массива указателей char на экран? - C++
Доброго времени суток. Делал наброски на телефонный справочник с несколькими телефонными книгами внутри. При написании пользуюсь тем,...

Не получается присвоить значение элементу массива указателей типа char *a[3] - C++
В попытках разобраться с массивами, указателями, массивами указателей и т.п. написал вот такой код: int main() { char *a = {...

7
Fyret
185 / 171 / 13
Регистрация: 30.07.2013
Сообщений: 359
23.09.2013, 17:03 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <algorithm>
#include <cstring>
#include <iostream>
 
int main()
{
    char* array[] = { "aa", "cc", "bb", "xxx", "tt" };
    size_t arraySize = sizeof(array)/sizeof(char*);
    
    std::sort( array, array + arraySize, strcmp );
    std::reverse( array, array + arraySize );
    
    for( int i = 0; i < arraySize; ++i )
    {
        std::cout << array[i] << std::endl;
    }
 
    return 0;
}
1
Nosudar
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 43
23.09.2013, 17:40  [ТС] #3
Вот такая вот ошибка при исполнении. Что не так?
0
Миниатюры
Сортировка массива указателей на char  
Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 871
23.09.2013, 17:45 #4
Nosudar, ошибка в строке 3717
0
Nosudar
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 43
23.09.2013, 17:46  [ТС] #5
Это ошибка не в моём коде, а в коде функции sort.
0
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
23.09.2013, 17:59 #6
Там же описана причина ошибки.
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
#include <algorithm>
#include <cstring>
#include <iostream>
 
bool comp(const char* lhs, const char* rhs)
{
    return strcmp(lhs, rhs) < 0;
}
 
int main()
{
    const char* array[] = { "aa", "cc", "bb", "xxx", "tt" };
    size_t arraySize = sizeof(array)/sizeof(const char*);
 
    std::sort( array, array + arraySize, comp );
    std::reverse( array, array + arraySize );
 
    for( int i = 0; i < arraySize; ++i )
    {
        std::cout << array[i] << std::endl;
    }
 
    return 0;
}
0
Fyret
185 / 171 / 13
Регистрация: 30.07.2013
Сообщений: 359
23.09.2013, 17:59 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <algorithm>
#include <cstring>
#include <iostream>
 
bool compare( const char* a, const char* b )
{
    return strcmp(a, b) < 0;
}
 
int main()
{
    char* array[] = { "aa", "cc", "bb", "xxx", "tt" };
    size_t arraySize = sizeof(array)/sizeof(char*);
    
    std::stable_sort( array, array  + arraySize, compare );
    
    for( int i = 0; i < arraySize; ++i )
    {
        std::cout << array[i] << std::endl;
    }
 
    return 0;
}
Кому интересно, почему, объяснение здесь.
0
Nosudar
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 43
23.09.2013, 18:26  [ТС] #8
Разобрался сам. Вот работающий код.
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
#include <iostream>
using namespace std;
 
long sort_p(char **ptr , int size){
    for(int i=0; i < size-1; i++){
 
        for(int j=i+1; j < size; j++){
 
            if(*ptr[j] < *ptr[i]){
 
                char *tmp = ptr[i];
 
                ptr[i] = ptr[j];
 
                ptr[j] = tmp;
 
            }
 
        }
 
    }
    return 0;
}
 
 
 
long print(char **ptr , int size){
    for(int i=0;i<size;i++) cout<<ptr[i]<<'\n';
    cout<<'\n';
    cout<<'\n';
    return 0;
}
int main(){
    
    char *astr[10] = {"Andrey","Kostya","Sasha","Den","Yaroslav","Oleg","Misha","Dima","Egor","Kiril"};
    int size = sizeof(astr)/sizeof(char*);
    print(astr,size);
    sort_p(astr,size);
    print(astr,size);
 
    if('A'<'B')cout << "true" <<endl;
    return 0;
}
0
23.09.2013, 18:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2013, 18:26
Привет! Вот еще темы с ответами:

Передача двумерного массива указателей на char в качестве параметра функции - C++
Есть массив char *result2; Нужно передать его в функцию void defDouble(???) в качестве одного из параметров . Как будет выглядеть...

Объяснить различия в работе указателей на целое число и указателей на const char (строки в стиле Си) - C++
Уважаемые программисты, возникло несколько вопросов касательно указателей. Почему при выводе указателя на int нужна звёздочка (*), а...

Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей - C++
Задача: создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей. Вернуть адрес...

Различия указателей char* от указателей других типов - C++
Помогите пожалуйста разобраться! Прочитал раздел про указатели и даже вроде бы понял. Что касается указателей на тип int. Но что...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru