Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 01.02.2009
Сообщений: 5

Лексикографическая сортировка слов

02.02.2009, 10:40. Показов 2747. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне срочно нужно сделать задачу по программированию на С++. Пожалуйста кому не трудно ее сделать помогите.Лексикографическая сортировка слов
1. Слова задавать в массиве.
2. Желательно не вводить данные с клавиатуры, а читать из файла.
3. Предусмотреть вывод исходного массива на экран.
4. Отсортированный массив вывести на экран и в файл.
5. Использовать быструю сортировку Хоара. Д.Кнут. Искусство программиро-вания для ЭВМ. Т.3. Сортировка и поиск. с.

За ранее благодарна!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.02.2009, 10:40
Ответы с готовыми решениями:

Лексикографическая сортировка
Задача: Пусть имеется N строк различной длины алфавита мощности M с заданным на них лексикографическим порядком (см. ). Необходимо...

Лексикографическая сортировка по имени
Привет всем форумчанам! Вот у меня такая проблемка: нужно реализовать лексикографическую сортировку по имени, а для этого придумать...

Поиск слов по маске в строке, их удаление, сортировка оставшихся слов
Доброго времени суток. Помогите, пожалуйста, реализовать задачу. нужно из текстового файла считать текст, потом по введенной пользователем...

12
0 / 0 / 0
Регистрация: 21.12.2007
Сообщений: 122
05.02.2009, 11:35
Тебе конечный вариант нужен или просто порассуждаем ?
Если конечный то поподробней как должно выглядеть , а то потом голову сломаешь.
0
0 / 0 / 0
Регистрация: 21.12.2007
Сообщений: 122
05.02.2009, 13:40
Если где ошибся то прошу прощения.
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// SortArray.cpp : Defines the entry point for the console application.
//
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
 
#ifndef FILE_NAME
#define FILE_NAME       'C:\Array.txt'
#endif
#ifndef MAX_CHAR
#define MAX_CHAR        1000
#endif
#ifndef NULL
#define NULL            0
#endif
#ifndef Char
#define Char            char
#endif
#ifndef Char_PTR
#define Char_PTR        Char*
#endif
#ifndef Char_ARRAY
#define Char_ARRAY      Char_PTR*
#endif
 
int SizeArray(Char_ARRAY aArray)
{
    return (aArray != NULL) ? (_msize(aArray)/sizeof(Char_PTR)):0;
}
 
void ShowArray(Char_ARRAY aArray)
{
    int theSizeArray = SizeArray(aArray);
    for(int index = 0 ; index< theSizeArray;index++)
        printf(' - %s
',NULL != aArray[index] ? aArray[index]: 'empty');
}
 
void FreeArray(Char_ARRAY& aArray)
{
    int theSizeArray = SizeArray(aArray);
 
    for(int index = 0 ; index< theSizeArray;index++)
        if(NULL != aArray[index])
            free(aArray[index]);
    
    if(NULL != aArray)
        free(aArray);
 
    aArray = NULL;
}
 
void PushBack(Char_PTR aNewStr,Char_ARRAY& aArray)
{
    int     theSizeArray = SizeArray(aArray);
 
    Char_ARRAY  theArray = (Char_ARRAY)malloc(sizeof(Char_PTR)*(theSizeArray  + 1));
 
    Char_PTR    theNewStr = (NULL != aNewStr) ? aNewStr: '';
 
    for(int index = 0 ; index< theSizeArray;index++)
    {
        if(NULL == aArray[index])
            aArray[index] = '';
 
        theArray[index] = (Char_PTR)malloc(sizeof(Char)*(strlen(aArray[index]) + 1));
 
        strcpy(theArray[index],aArray[index]);
    }
        
    theArray[theSizeArray] = (Char_PTR)malloc(sizeof(Char) * (strlen(theNewStr) + 1));
 
    strcpy(theArray[theSizeArray],theNewStr );
 
    FreeArray(aArray);
 
    aArray = theArray;
}
 
int CompareStr( const void *arg1, const void *arg2 )
{
   return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}
 
void SortArray(Char_ARRAY aArray)
{
    qsort((void*)aArray,(size_t)SizeArray(aArray), sizeof(Char_PTR), CompareStr); 
}
 
int main(int argc, Char_PTR argv[])
{
    argc--;
    argv++;
 
    FILE*       theFileStream = fopen((argc)?argv[0]:FILE_NAME,'r');
 
    if(theFileStream)
    {
        printf('File open successfull
 Contents of file before sorting : 
');
 
        Char        theBuffer[MAX_CHAR];
 
        Char_ARRAY  theArrayStr = NULL;
 
        while(EOF  != fscanf(theFileStream,'%s',theBuffer))
        {
            PushBack(theBuffer,theArrayStr);
        }
 
        ShowArray(theArrayStr);
 
        printf('Contents of file after sorting : 
');
 
        SortArray(theArrayStr);
 
        ShowArray(theArrayStr);
 
        FreeArray(theArrayStr);
 
        fclose(theFileStream);
    }
    else
    {
        printf('File Not Faund
');
    }
    char c;
    scanf('%c',&c);
    return 0;
}
0
0 / 0 / 0
Регистрация: 01.02.2009
Сообщений: 5
16.02.2009, 10:05  [ТС]
Привет, спасибо большое за программу. Но там есть 2 ошибки, которые я не могу исправить, посмотри еще раз, пожалуйста! Очень благодарна за все. Ошибки:
return (aArray != NULL) ? (_msize(aArray)/sizeof(Char_PTR)):0; в этой строчке и в этой-
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// SortArray.cpp : Defines the entry point for the console 
application. 
// 
 
#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <malloc.h> 
 
#ifndef FILE_NAME 
#define FILE_NAME 'C:\Array.txt' 
#endif 
#ifndef MAX_CHAR 
#define MAX_CHAR 1000 
#endif 
#ifndef NULL 
#define NULL 0 
#endif 
#ifndef Char 
#define Char char 
#endif 
#ifndef Char_PTR 
#define Char_PTR Char* 
#endif 
#ifndef Char_ARRAY 
#define Char_ARRAY Char_PTR* 
#endif 
 
int SizeArray(Char_ARRAY aArray) 
{ 
return (aArray != NULL) ? (_msize(aArray)/sizeof(Char_PTR)):0; 
} 
 
void ShowArray(Char_ARRAY aArray) 
{ 
int theSizeArray = SizeArray(aArray); 
for(int index = 0 ; index< theSizeArray;index++) 
printf(' - %s
',NULL != aArray[index] ? aArray[index]: 'empty'); 
} 
 
void FreeArray(Char_ARRAY& aArray) 
{ 
int theSizeArray = SizeArray(aArray); 
 
for(int index = 0 ; index< theSizeArray;index++) 
if(NULL != aArray[index]) 
free(aArray[index]); 
 
if(NULL != aArray) 
free(aArray); 
 
aArray = NULL; 
} 
 
void PushBack(Char_PTR aNewStr,Char_ARRAY& aArray) 
{ 
int theSizeArray = SizeArray(aArray); 
 
Char_ARRAY theArray = (Char_ARRAY)malloc(sizeof(Char_PTR)*(theSizeArray + 
1)); 
 
Char_PTR theNewStr = (NULL != aNewStr) ? aNewStr: ''; 
 
for(int index = 0 ; index< theSizeArray;index++) 
{ 
if(NULL == aArray[index]) 
aArray[index] = ''; 
 
theArray[index] = (Char_PTR)malloc(sizeof(Char)*(strlen(aArray[index]) + 
1)); 
 
strcpy(theArray[index],aArray[index]); 
} 
 
theArray[theSizeArray] = (Char_PTR)malloc(sizeof(Char) * 
(strlen(theNewStr) + 1)); 
 
strcpy(theArray[theSizeArray],theNewStr ); 
 
FreeArray(aArray); 
 
aArray = theArray; 
} 
 
int CompareStr( const void *arg1, const void *arg2 ) 
{ 
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 ); 
} 
 
void SortArray(Char_ARRAY aArray) 
{ 
qsort((void*)aArray,(size_t)SizeArray(aArray), sizeof(Char_PTR), 
CompareStr); 
} 
 
int main(int argc, Char_PTR argv[]) 
{ 
argc--; 
argv++; 
 
FILE* theFileStream = fopen((argc)?argv[0]:FILE_NAME,'r'); 
 
if(theFileStream) 
{ 
printf('File open successfull
 Contents of file before sorting : 
'); 
 
Char theBuffer[MAX_CHAR]; 
 
Char_ARRAY theArrayStr = NULL; 
 
while(EOF != fscanf(theFileStream,'%s',theBuffer)) 
{ 
PushBack(theBuffer,theArrayStr); 
} 
 
ShowArray(theArrayStr); 
 
printf('Contents of file after sorting : 
'); 
 
SortArray(theArrayStr); 
 
ShowArray(theArrayStr); 
 
FreeArray(theArrayStr); 
 
fclose(theFileStream); 
} 
else 
{ 
printf('File Not Faund
'); 
} 
char c; 
scanf('%c',&c); 
return 0; 
}
0
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 34
21.02.2009, 11:37
А как вам человек ответит, если описания ошибок нет ?
У меня этот код собирается без ошибок.

предположительно может быть
return _stricmp( * (( char** ) arg1), * (( char** ) arg2) );
return ((aArray != NULL) ? (_msize(aArray) / sizeof(Char_PTR) ): 0 );
0
0 / 0 / 0
Регистрация: 01.02.2009
Сообщений: 5
24.02.2009, 07:12  [ТС]
Function `_msize should have a prototype
Function `_stricmp` should have a prototype
Вот что он говорит по поводу тех двух ошибок! А то, что ты мне написал, вообще 5 ошибок выдало!
Все равно спасибо за все.
Очень сильно благодарна, что ты мне помогаешь!!
0
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 34
24.02.2009, 12:37
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include 'stdafx.h'
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
 
#ifndef FILE_NAME
#define FILE_NAME 'C:\Array.txt'
#endif
#ifndef MAX_CHAR
#define MAX_CHAR 1000
#endif
#ifndef NULL
#define NULL 0
#endif
#ifndef Char
#define Char char
#endif
#ifndef Char_PTR
#define Char_PTR Char*
#endif
#ifndef Char_ARRAY
#define Char_ARRAY Char_PTR*
#endif
 
 
 
class SArray
{
    Char_ARRAY  mArray;
    int         mSize;
    operator=   (const SArray& aArray){}
    SArray      (const SArray& aArray){}
 
public:
    SArray():mArray(NULL),mSize(0)  {}
    ~SArray()                       {FreeArray();}
 
    void ShowArray()
    {
        for(int index = 0 ; index< mSize;index++)
            printf(' - %s
',NULL != mArray[index] ? mArray[index]: 'empty');
    }
    void FreeArray()
    {
        if(NULL == mArray)
            return;
 
        for(int index = 0 ; index< mSize;index++)
        if(NULL != mArray[index])
            free(mArray[index]);
 
        free(mArray);
 
        mArray = NULL;
 
        mSize = 0;
    }
    void PushBack(Char_PTR aNewStr)
    {
        long theSize = mSize;
 
        Char_ARRAY theArray = (Char_ARRAY)malloc(sizeof(Char_PTR)*(theSize + 1));
 
        Char_PTR theNewStr = (NULL != aNewStr) ? aNewStr: '';
 
        for(int index = 0 ; index< theSize;index++)
        {
 
                theArray[index] = (Char_PTR)malloc(sizeof(Char)*(strlen(mArray[index]) + 1));
 
                strcpy(theArray[index],mArray[index]);
        }
 
        theArray[theSize] = (Char_PTR)malloc(sizeof(Char) * (strlen(theNewStr) + 1));
 
        strcpy(theArray[theSize],theNewStr );
 
        FreeArray();
 
        mArray = theArray;
 
        mSize  = theSize + 1;
    }
    void SortArray()
    {
        qsort((void*)mArray,(size_t)mSize, sizeof(Char_PTR), CompareStr); 
    }
    static int CompareStr( const void *arg1, const void *arg2 )
    {
        return strcmp( * ( char** ) arg1, * ( char** ) arg2 );
    }
};
 
int main(int argc, Char_PTR argv[])
{
argc--;
argv++;
 
FILE* theFileStream = fopen((argc)?argv[0]:FILE_NAME,'r');
 
if(theFileStream)
{
    printf('File open successfull
 Contents of file before sorting : 
');
 
    Char theBuffer[MAX_CHAR];
 
    SArray theArrayStr;
 
    while(EOF != fscanf(theFileStream,'%s',theBuffer))
    {
        theArrayStr.PushBack(theBuffer);
    }
 
    theArrayStr.ShowArray();
 
    printf('Contents of file after sorting : 
');
 
    theArrayStr.SortArray();
 
    theArrayStr.ShowArray();
 
    theArrayStr.FreeArray();
 
    fclose(theFileStream);
}
else
{
printf('File Not Faund
');
}
char c;
scanf('%c',&c);
return 0;
}
0
0 / 0 / 0
Регистрация: 01.02.2009
Сообщений: 5
25.02.2009, 08:28  [ТС]
Привет, у меня опять не получается, он пишет, что файл 'stdafx.h 'не найден, что мне нужно сделать, для того что бы подключить этот файл? Напиши пожалуйста. А так без этого файла программа загружается, только файл запрашивает!
Спасибо за помощь.
0
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 34
25.02.2009, 09:58
Убери строку
#include 'stdafx.h'
можно так
// #include 'stdafx.h'

если после етого появится сообщение типа
fatal error C1010: unexpected end of file while looking for precompiled header directive
то нужно сделать следующее (в Visual C++)

(меню)Projects->Setings (вкладка) C/C++ Category: Precompiled Headers
поставь Not Using Precompiled Headers
0
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 34
25.02.2009, 10:03
Вариант 2 создание и подключение файла в VC6
Меню File -> New
C/C++ Header File
File Name: вводишь stdafx (имя файла который ты хочешь создать)

PS:
C++ Source File - создает файл 'твое_имя.cpp'
C/C++ Header File - создает файл 'твое_имя.h'

Можно еще по другому :
в дериктории в которой твои файлы
создается нужный файл с расшерением .h
далее Projects -> Add to projects -> File - > твой файл
0
0 / 0 / 0
Регистрация: 01.02.2009
Сообщений: 5
02.03.2009, 06:46  [ТС]
когда убираешь эту строчку он пишет, что файл не найден!
0
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 34
02.03.2009, 10:30
Какой файл не найден ?
0
FAko
14.03.2009, 17:20
Компилёр пусть назовёт...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.03.2009, 17:20
Помогаю со студенческими работами здесь

Лексикографическая сортировка java
Помогите, пожалуйста! Есть код, в него нужно добавить лексикографическую сортировку. Чтобы на выходе было получено: мыла мама ...

Лексикографическая Сортировка Цепочек Последовательностей Различной Длины
Необходимо реализовать лексикографический алгоритм сортировки цепочек последовательностей различной длины.. Как это сделать не знаю.....

STL: Сортировка слов по количеству согласных букв; вывод слов, встречающихся в списке более одного раза
Помогите написать программу!! Сортировка слов по количеству согласных букв; вывод слов, встречающихся в списке более одного раза. ...

Сортировка массивов (Сортировка слов по алфавиту)
Объясните мне сортировку слов по алфавиту .Сравнивать целиком слова нельзя ?Есть ли какой нибудь быстрый способ?Какие то полезные функции...

сортировка слов
#include &lt;iostream&gt; #include&lt;vector&gt; #include&lt;list&gt; using namespace std; int main() { ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru