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

Отсортировать в лексикографическом порядке последовательность слов одинаковой длины (сортировкой Хоара)

03.06.2014, 19:14. Показов 1488. Ответов 2
Метки нет (Все метки)

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
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
include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include "string.h"
using namespace std;
int srav=0, per=0, size=20;
int const z=20, x=20;
char arr[z][x];
 
void input_file();
void hoarasort(); 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    cout<<"Дання программа сортирует слова с помощью сортировки Хоора"<<endl;
    cout<<endl<<"Исходная последовательность слов:"<<endl;
    input_file();   
    
    for (int i = 0; i < z; i++)
        cout<<arr[i]<<endl;
 
    hoarasort(arr,0);
    cout<<endl<<endl<<endl;
    system("pause");
    return 0;
}
 
void input_file()
{
    ifstream file("String.txt");
    for(int p = 0; p < z; p++)
        file>>arr[p];
    file.close();
}
 
 
void hoarasort(char* arr, int l, int r)
{
 
char tmp, x = arr[(l + r) / 2];//серединый элемент
int ml = l, mr = r; 
do {
   while (arr[ml] < x)
     ml++;
   while (arr[mr] > x)
     mr--;
 
   if (ml <= mr) 
   {
     if (ml < mr)
     {
       tmp=arr[ml];
       arr[ml]=arr[mr];
       arr[mr]=tmp;
     }
     ml++;
     mr--;
   }
} while (ml <= mr);
 
if (ml < r)
   hoarasort(arr, ml, r);
if (ml < mr)
   hoarasort(arr, l,mr);
}
Дак вот не пойму как реализовать это в словах.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2014, 19:14
Ответы с готовыми решениями:

Отсортировать слова в строке в лексикографическом порядке
Добрый вечер. Можете помочь с написанием программы для задания: Отсортировать слова в строке в...

Отсортировать строки числовой матрицы по возрастанию в лексикографическом порядке
Дана матрица A из целых чисел размером MxN. Переставить строки матрицы так, чтобы строки стали...

Массив строк отсортировать в лексикографическом порядке (возможно ли использовать std::sort?)
У меня есть такая задача: надо массив строк отсортировать в лексикографическом порядке. Так вот,...

Сортировка слов в строке в лексикографическом порядке (по алфавиту)
Как отсортировать слова в строке в лексикографическом порядке (по алфавиту)?Помогите , пожалуйста.

2
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
03.06.2014, 19:23 2
вместо < и > strcmp
вместо = strcpy
0
1 / 1 / 1
Регистрация: 29.11.2013
Сообщений: 46
03.06.2014, 19:40  [ТС] 3
То есть так? И что делать со средним элементом?
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
 
void hoarasort(char* arr, int l, int r)
{
 
char tmp, x = arr[(l + r) / 2];//серединый элемент
int ml = l, mr = r; 
do {
   while (strcmp(arr[ml],x)<0)
     ml++;
   while (strcmp(arr[mr],x)<0)
     mr--;
 
   if (strcmp(arr[mr],arr[ml]) && strcpy(arr[mr],arr[ml])) 
   {
     if (strcmp(arr[ml],arr[mr])<0)
     {
       tmp=arr[ml];
       arr[ml]=arr[mr];
       arr[mr]=tmp;
     }
     ml++;
     mr--;
   }
} while (strcmp(arr[ml],arr[mr]) && strcpy(arr[ml],arr[mr]));
 
if (strcmp(arr[mr],r)<0)
   hoarasort(arr, ml, r);
if (strcmp(arr[ml],arr[mr])<0)
   hoarasort(arr, l,mr);
}
0
03.06.2014, 19:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2014, 19:40
Помогаю со студенческими работами здесь

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

Определить наиболее многочисленную группу слов одинаковой длины. Объединить эти слова в строку.
Определить наиболее многочисленную группу слов одинаковой длины. Объединить эти слова в строку. ...

Последовательность слов одинаковой длины
Задание: Дана последовательность, содержащая от 1 до n слов (n=10), в каждом из которых от 1 до k ...

Выведите все строки длины N в лексикографическом порядке
Доброго времени суток. Помогите пожалуйста решить По данным числам N и K выведите все строки длины...


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

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