Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Samehada
0 / 0 / 0
Регистрация: 15.01.2014
Сообщений: 46
#1

Из строки, содержащей некоторый текст, выделить слова и напечатать их в алфавитном порядке - Delphi

06.06.2014, 00:27. Просмотров 681. Ответов 1
Метки нет (Все метки)

Разработать программу которая из строки содержащей некоторый текст выделяет слова и печатает их в алфавитном порядке(по первой букве)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2014, 00:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Из строки, содержащей некоторый текст, выделить слова и напечатать их в алфавитном порядке (Delphi):

Напечатать слова в алфавитном порядке
Дана строка, содержащая от 1 до 30 слов, в каждом из которых от 1 до 10...

Напечатать все слова в алфавитном порядке.
Здравствуйте! Очень надо,помогите пожалуйста.На этой недели сдавать,а прога не...

Напечатать заданные слова в алфавитном порядке
Даны три слова, в каждом из которых от 1 до 6 строчных латинских букв и за...

Дана последовательность слов. Напечатать все слова в алфавитном порядке.
1) Дан массив целых чисел из 12 элементов, заполненных случайным образом...

Из текстового файла напечатать в алфавитном порядке все слова длинной N.
Дан текстовый файл. Напечатать в алфавитном порядке все слова из данного файла,...

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

1
Mawrat
12821 / 5729 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
06.06.2014, 22:13 #2
Лучший ответ Сообщение было отмечено Samehada как решение

Решение

Вот, как можно извлечь из текста все слова и записать их в динамический массив.
На форму надо положить:
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
Для кнопки Button1 создать обработчик события OnClick и оформить код так, как показано ниже.
Исходный текст надо ввести в Memo1. По нажатию на кнопку из текста будут выделены все слова, записаны в динамический массив, а затем, все слова из массива будут распечатаны в Memo2.
Delphi
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
type
  TArrWords = array of String;
 
//Функция извлекает из строки aStr все слова, записывает их в динамический массив
//и возвращает этот массив в вызывающий код.
function GetWords(const aStr : String) : TArrWords;
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Величина приращения динамического массива.
  Capacity = 100;
var
  i, j, Len, LenW : Integer;
begin
  SetLength(Result, 0);
  Len := Length(aStr);
  j := 0; //Количество элементов, записанных в массив.
  LenW := 0; //Длина очередного слова.
  for i := 1 to Len do
    //Если символ не является разделителем, значит он принадлежит слову.
    if not (aStr[i] in D) then
    begin
      Inc(LenW); //Учитываем очередной символ в длине слова.
      if (i = Len) or (aStr[i + 1] in D) then //Отслеживаем конец слова.
      begin
        if j = Length(Result) then //Если требуется, увеличиваем длину массива.
          SetLength(Result, j + Capacity);
        Result[j] := Copy(aStr, i - LenW + 1, LenW); //Добавляем слово в массив.
        Inc(j);    //Увеличиваем счётчик элементов массива.
        LenW := 0; //Сброс длины слова.
      end;
    end;
  //Изменяем длину массива в соответствии с количеством добавленных в него элементов.
  if j < Length(Result) then
    SetLength(Result, j);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  A : TArrWords;
  i : Integer;
begin
  A := GetWords(Memo1.Text);
  Memo2.Clear;
  for i := 0 to High(A) do
    Memo2.Lines.Add(A[i]);
end;
Если надо вывести слова в алфавитном порядке, то перед выводом в Memo2 надо массив отсортировать по возрастанию. Для этого можно применить любой метод сортировки - пузырьковый, вставками и пр.

Добавлено через 19 часов 49 минут
С сортировкой по алфавиту:
Delphi
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
implementation
 
{$R *.dfm}
 
type
  TArrWords = array of String;
 
//ÔóГ*êöèÿ èçâëåêГ*ГҐГІ ГЁГ§ ñòðîêè aStr ГўГ±ГҐ ñëîâГ*, Г§Г*ïèñûâГ*ГҐГІ ГЁГµ Гў äèГ*Г*ìè÷åñêèé Г¬Г*Г±Г±ГЁГў
//ГЁ âîçâðГ*Г№Г*ГҐГІ ýòîò Г¬Г*Г±Г±ГЁГў Гў âûçûâГ*ГѕГ№ГЁГ© êîä.
function GetWords(const aStr : String) : TArrWords;
const
  //ГђГ*çäåëèòåëè ñëîâ.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Âåëè÷èГ*Г* ïðèðГ*Г№ГҐГ*ГЁГї äèГ*Г*ìè÷åñêîãî Г¬Г*Г±Г±ГЁГўГ*.
  Capacity = 100;
var
  i, j, Len, LenW : Integer;
begin
  SetLength(Result, 0);
  Len := Length(aStr);
  j := 0; //Êîëè÷åñòâî ýëåìåГ*òîâ, Г§Г*ГЇГЁГ±Г*Г*Г*ûõ Гў Г¬Г*Г±Г±ГЁГў.
  LenW := 0; //ÄëèГ*Г* î÷åðåäГ*îãî ñëîâГ*.
  for i := 1 to Len do
    //Åñëè ñèìâîë Г*ГҐ ÿâëÿåòñÿ Г°Г*çäåëèòåëåì, Г§Г*Г*Г·ГЁГІ Г®Г* ïðèГ*Г*äëåæèò ñëîâó.
    if not (aStr[i] in D) then
    begin
      Inc(LenW); //Ó÷èòûâГ*ГҐГ¬ î÷åðåäГ*îé ñèìâîë Гў äëèГ*ГҐ ñëîâГ*.
      if (i = Len) or (aStr[i + 1] in D) then //ÎòñëåæèâГ*ГҐГ¬ ГЄГ®Г*ГҐГ¶ ñëîâГ*.
      begin
        if j = Length(Result) then //Åñëè òðåáóåòñÿ, óâåëè÷èâГ*ГҐГ¬ äëèГ*Гі Г¬Г*Г±Г±ГЁГўГ*.
          SetLength(Result, j + Capacity);
        Result[j] := Copy(aStr, i - LenW + 1, LenW); //ÄîáГ*âëÿåì ñëîâî Гў Г¬Г*Г±Г±ГЁГў.
        Inc(j);    //Óâåëè÷èâГ*ГҐГ¬ Г±Г·ВёГІГ·ГЁГЄ ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*.
        LenW := 0; //Ñáðîñ äëèГ*Г» ñëîâГ*.
      end;
    end;
  //ÈçìåГ*ГїГҐГ¬ äëèГ*Гі Г¬Г*Г±Г±ГЁГўГ* Гў ñîîòâåòñòâèè Г± êîëè÷åñòâîì äîáГ*âëåГ*Г*ûõ Гў Г*ГҐГЈГ® ýëåìåГ*òîâ.
  if j < Length(Result) then
    SetLength(Result, j);
end;
 
//ÑîðòèðîâêГ* Г¬Г*Г±Г±ГЁГўГ* ГЇГ® âîçðГ*Г±ГІГ*Г*ГЁГѕ. Ìåòîä ñîðòèðîâêè - ñîðòèðîâêГ* ïðîñòûìè ГўГ±ГІГ*ГўГЄГ*ìè.
procedure SortAsc(var aArr : TArrWords);
var
  i, j : Integer;
  V : String;
begin
  for i := 1 to High(aArr) do
  begin
    j := i;
    V := aArr[i];
    while (j > 0) and (aArr[j - 1] > V) do
    begin
      aArr[j] := aArr[j - 1];
      Dec(j);
    end;
    aArr[j] := V;
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  A : TArrWords;
  i : Integer;
begin
  A := GetWords(Memo1.Text); //Âûäåëÿåì ñëîâГ* ГЁ Г§Г*ïèñûâГ*ГҐГ¬ ГЁГµ Гў Г¬Г*Г±Г±ГЁГў A.
  SortAsc(A); //ÑîðòèðîâêГ* ГЇГ® âîçðГ*Г±ГІГ*Г*ГЁГѕ (ГЇГ® Г*ëôГ*ГўГЁГІГі).
  Memo2.Clear;
  for i := 0 to High(A) do
    Memo2.Lines.Add(A[i]);
end;
 
end.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 22:13
Привет! Вот еще темы с решениями:

Напечатать в алфавитном порядке все гласные буквы которые входят в нечетные слова
Дана непустая последовательность слов из строчных русских букв; между...

Напечатать в алфавитном порядке все различные строчные буквы, входящие в заданный текст из 100 литер
Обьясните пожалуйста подробно где что и как это прога делает(я ее купил)...

Текст задан строкой, напечатать в алфавитном порядке: Все гласные буквы, которые входят в последнее слово
пожалуйста,помогите написать код!!! Заранее огромное спасибо!!!)) Текст...

Множества: Дан текст, напечатать в алфавитном порядке все буквы, которые входят только в одно слово
Дан текст, напечатать в алфавитном порядке все буквы, которые входят только в...


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

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

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