Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 4
Регистрация: 08.08.2013
Сообщений: 86
1

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

30.09.2014, 22:06. Показов 1000. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ни как не получается отсортировать это. Помогите отладить прогу плиз
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
int main()
{
    _getch();
    char *arrptrs[DAYS] = 
    {"g","e",
    "f","e",
    "d","c",
    "a"};
    void bsort(char *[],int);
        bsort(arrptrs,DAYS);
    for(int j = 0;j<DAYS;j++)
        cout << arrptrs[j]<<endl;
    
    _getch();
    return 0;
}
void bsort(char *ptr[],int n)
{
 
    for(int j = 0;j<n-1;j++)
        for(int k = j+1;k<n;k++)
        {
            
            if(*ptr[j]>*ptr[j+1])
            {
                char temp = *ptr[j];
                ptr[j] = ptr[j+1];
                ptr[j+1] = &temp;
            }
 
        }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2014, 22:06
Ответы с готовыми решениями:

Сортировка массива указателей на char
Есть массив указателей на char-ы. Нужно отсортировать их по алфавиту. Прошу помочь как можно...

Как реализовать имитацию работы указателей с применением массивов char. Задача Лафоре
Добрый день! Столкнулся с задачей из книги Лафоре, гл. 10 зад.12. Читаю. Или написано непонятно,...

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

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

5
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
30.09.2014, 22:16 2
Если строки по 1 букве, то зачем двумерный массив:
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
void bsort(char *,int);
int main()
{
   const int DAYS=7;
    char arrptrs[DAYS] = {'g','e','f','e','d','c','a'};
    bsort(arrptrs,DAYS);
    for(int j = 0;j<DAYS;j++)
        cout << arrptrs[j]<<endl;
    
    _getch();
    return 0;
}
void bsort(char *ptr,int n)
{
 
    for(int j = 0;j<n-1;j++)
        for(int k = j+1;k<n;k++)
        {
            
            if(ptr[j]>ptr[j+1])
            {
                char temp = ptr[j];
                ptr[j] = ptr[j+1];
                ptr[j+1] = temp;
            }
 
        }
}
0
1 / 1 / 4
Регистрация: 08.08.2013
Сообщений: 86
30.09.2014, 22:21  [ТС] 3
У меня массив не отсортированный выводится , так и должно быть?

Добавлено через 44 секунды
Типо, нужно чтобы в алфавитном порядке сортировалось
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
30.09.2014, 22:26 4
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
#include <iostream>
using namespace std;
 
#define DAYS 7
 
void bsort(char *ptr, int n)
{
    for (int j = 0; j < n; j++) 
        for (int k = 0; k<n-1; k++)
        {
            if (ptr[k] > ptr[k + 1])
            {
                char temp = ptr[k];
                ptr[k] = ptr[k + 1];
                ptr[k + 1] = temp;
            }
        }
}
void show(char *ptr, int n)
{
    for (int j = 0; j<n; j++)
        cout << ptr[j] << endl;
}
int main()
{       
    char arrptrs[DAYS] = { 'g', 'e', 'f', 'e', 'd', 'c', 'a' }; 
    bsort(arrptrs, DAYS);
    show(arrptrs, DAYS);    
    return 0;
}
Добавлено через 4 минуты
Цитата Сообщение от Spirit370 Посмотреть сообщение
Сортировка элементов массивов указателей на char
У вас массив char. Массив указателей это:
C++
1
2
3
char** m_arr = new char*[10];
for(int i=0;i<10;i++)
  m_arr[i] = new char;
0
1 / 1 / 4
Регистрация: 08.08.2013
Сообщений: 86
30.09.2014, 22:33  [ТС] 5
А как эту программу переделать для сортировки такого массива ?
C++
1
char *arrptrs[DAYS] = { "sfsfjs", "sfjsfldf", "ljsdfs", "eqf", "feor", "apkzzxf", "qwej" };
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
01.10.2014, 00:17 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
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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
void printStrings(vector<string> strings)
{
    for(vector<string>::iterator i = strings.begin(), ie = strings.end(); i < ie; i++)
    {
        cout<<*i <<endl;
    }
    cout<<endl;
}
 
void sortVectorString(vector<string> &strings,bool equ = true)
{
    for(vector<string>::iterator i = strings.begin(), je = strings.end() - 1,ie = strings.end() - 1; i < ie; i++,je-- )
        for(vector<string>::iterator j = strings.begin(); j < je; j++)
        {
            vector<string>::iterator j_plus = j+1;
            if(equ)
            {
                if(*j > *(j_plus))
                {
                    string tmp = *j;
                    *j = *j_plus;
                    *j_plus= tmp;
                }
            }
            else
                if(*j < *(j_plus))
                {
                    string tmp = *j;
                    *j = *j_plus;
                    *j_plus= tmp;
                }
        }
}
 
int main()
{
    vector <string> strings;
 
    strings.push_back("6sfsfjs");
    strings.push_back("4sfsfjs");
    strings.push_back("1sfsfjs");
    strings.push_back("2sfsfjs");
    strings.push_back("3sfsfjs");
    strings.push_back("7sfsfjs");
    strings.push_back("5sfsfjs");
 
    printStrings(strings);
 
    sortVectorString(strings,true);
 
    printStrings(strings);
 
    sortVectorString(strings,false);
 
    printStrings(strings);
 
    return 0;
}
0
01.10.2014, 00:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2014, 00:17
Помогаю со студенческими работами здесь

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

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

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

Создание массивов указателей на массивы указателей
Помогите в решении задачи: создал массив указателей на массивы указателей на строки, но компилятор...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru