Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
1

работа с функцией qsort

20.12.2011, 17:44. Просмотров 1695. Ответов 32
Метки нет (Все метки)

вот есть код который отделает слова и записывает в массив и надо их отсортировать по возрастанию длины как использовать qsort в данном случае?
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
#include <iostream>
using namespace std;
 
 
 
void main()
{
 
char div[] = "(){}[]<>;\"=+-*., ";
char*text,*s1,*s2;
text=new char[30];
s1=new char[30];
s2=new char[30];
 char *mas[30];
     int mac[30];    
        char s[486]="So she was considering in her own mind, as well as she could, for the hot day made her feel very sleepy and stupid,  whether  the  pleasure  of making a daisy-chain would be worth the trouble of getting up and  picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.";
        cout<<"Enter string: ";
        unsigned int a,i=0;
        a=0;
        int arrCount[255];
        int ind=0;
        s1=strtok(s,div);
     while (s1!=NULL)
     {
          mas[i]=new char[30];
          strcpy(mas[i],s1);
          mac[i]=strlen(s1);
          i++;
          s1=new char[30];
          s1=strtok(NULL,div);
     }
//qsotr(
 system("pause");
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2011, 17:44
Ответы с готовыми решениями:

задание с функцией qsort(). язык C
задание: составить программу, которая обрабатывает следущие данные про наличие вычислительной...

Пожскажите с функцией sort() или qsort()
Есть программа, которая генерирует случайно 10 неповторяющихся чисел от 1 до 10 и записывает их в...

Возникли трудности с функцией быстрой сортировки qsort
Добрый вечер. Есть массив прямоугольников со своей высотой и шириной, надо отсортировать отдельно...

Работа функции qsort - объяснить работу функции
#include&lt;iostream&gt; #include&lt;cstdlib&gt; int mysort(const void *arg1, const void *arg2); int main()...

Работа с функцией
Описать функцию smooth(A,n), заменяющую каждый элемент вещественного массива A размера n на его...

32
OstapBender
589 / 527 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
20.12.2011, 19:04 2
C
1
qsort(mas,i,30,cmp);
C
1
2
3
int cmp(const void* a, const void* b) {
return strcmp(*(char**)a,*(char**)b);
}
не проверял.
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 19:58  [ТС] 3
ошибка происходит
ОС Windows инициировала точку останова в laba-1.exe.

Это может быть вызвано повреждением кучи и указывает на ошибку в laba-1.exe или в одной из загруженных им DLL.

Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит laba-1.exe

Выведенное на экран окно содержит дополнительные данные для диагностики ошибки

Добавлено через 19 минут
помогите пожалуйста интерестно почему так выбивает ошибку
0
go
Эксперт С++
3638 / 1370 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 20:10 4
Цитата Сообщение от OstapBender Посмотреть сообщение
int cmp(const void* a, const void* b) {
return strcmp(*(char**)a,*(char**)b);
}
C
1
int cmp(const void* a, const void* b) { return strcmp((char*)a, (char*)b); }
0
20.12.2011, 20:10
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 20:19  [ТС] 5
ошибки нету но оно как то не сортирует

Добавлено через 5 минут
можете проверить почему вроде массив слов правильно сделан отделил а вот почему не сортирует
0
go
Эксперт С++
3638 / 1370 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 20:21 6
sergeu90, а понял... Вы создаете массив указателей. Тогда так.
Цитата Сообщение от OstapBender Посмотреть сообщение
qsort(mas,i,30,cmp);
C
1
2
3
int cmp(const void* a, const void* b) { return strcmp(*(char**)a,*(char**)b); }
 
qsort (arr, NumOfElemnts, sizeof (arr[0]), cmp);
Добавлено через 1 минуту
Цитата Сообщение от OstapBender Посмотреть сообщение
qsort(mas,i,30,cmp);
К чему это 30?
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 20:21  [ТС] 7
а под мой код что надо поменять
0
go
Эксперт С++
3638 / 1370 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 20:22 8
arr - это ваш mas
NumOfElements - кол-во элементов в массиве. Не знаю сколько у Вас их.
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 20:24  [ТС] 9
вот посмотрите мой код почему то не хочет сортировать
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
#include <iostream>
using namespace std;
int cmp(const void* a, const void* b) { return strcmp(*(char**)a,*(char**)b); }
void main()
{
 
char div[] = "(){}[]<>;\"=+-*., ";
char*text,*s1,*s2;
text=new char[30];
s1=new char[30];
s2=new char[30];
 char *mas[30];
     int mac[30];    
        char s[486]="So she was considering in her own mind, as we";
        //cout<<"Enter string: ";
       int a,i=0;
        a=0;
        int arrCount[255];
        int ind=0;
        s1=strtok(s,div);
     while (s1!=NULL)
     {
         mas[i]=new char[30];
         strcpy(mas[i],s1);
         mac[i]=strlen(s1);
         i++;
         s1=new char[30];
         s1=strtok(NULL,div);
     }
 
qsort (mas, i, sizeof (mas[0]), cmp);
for (int ii=0;ii<=i;ii++)
{
    cout<<mas[i]<<endl;
}
 system("pause");
}
0
go
Эксперт С++
3638 / 1370 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 20:32 10
sergeu90, заголовки я буду подключать? int main или стандарт вы обошли мимо. А память кто будет выделять. Напишите простенькую программку, вы strtok неправильно пользуетесь. Рано Вам еще сортировать, сначало правильно массив создайте
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 20:34  [ТС] 11
помогите плиз написсать код
0
go
Эксперт С++
3638 / 1370 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 20:35 12
sergeu90, пользуйтесь strdup
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 20:35  [ТС] 13
ок посмотрю
0
OstapBender
589 / 527 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
20.12.2011, 21:18 14
да, я ошибся с размером, надо 3-м параметром - 4. посмотрел сначала на "mas[i]=new char[30];"
C
1
qsort(mas,i,4,cmp);
cmp не надо трогать!
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 21:40  [ТС] 15
почему код не работает помогите переписать что бы выводило отсортированные слова
0
go
Эксперт С++
3638 / 1370 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
20.12.2011, 21:49 16
Цитата Сообщение от OstapBender Посмотреть сообщение
да, я ошибся с размером, надо 3-м параметром - 4.
Опять ошиблись, размер указателя варьируется и зависит от системы!
Без sizeof никак, да и признак дурного тона его не использовать, даже если вы пишете программу в студии. Код должен быть переносимым...
C
1
sizeof (char *);
или лучше
C
1
sizeof (arr[0]);
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 21:52  [ТС] 17
а поможете исправить ошибку ?
0
OstapBender
589 / 527 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
20.12.2011, 21:57 18
go, придирки
sergeu90, мой код работает!
0
sergeu90
27 / 28 / 5
Регистрация: 17.10.2009
Сообщений: 739
20.12.2011, 21:57  [ТС] 19
можете его скинуть уже работающий весь что бы выводило строки а то у меня вывода не было в моем коде не мог вывести пожалуйста
0
OstapBender
589 / 527 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
20.12.2011, 21:58 20
C
1
2
3
4
5
    qsort(mas,i,4,cmp);
 
    for (int k=0; k<i; k++) {
        puts(mas[k]);
    }
0
20.12.2011, 21:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2011, 21:58

Работа с функцией
Задание : Отсортировать массив по возрастанию #include &quot;stdafx.h&quot; #include &lt;iostream&gt;...

Работа с функцией

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


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

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

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