Страж леса
26 / 26 / 24
Регистрация: 13.12.2012
Сообщений: 146
1

Дана строка, состоящая из слов, разделенных пробелом. Вывести строку, состоящую из этих же слов, расположенных в алфавитном порядке

26.12.2012, 13:50. Показов 5795. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка, состоящая из слов, разделенных пробелом. Вывести строку, состоящую из этих же слов, расположенных в алфавитном порядке.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2012, 13:50
Ответы с готовыми решениями:

Дана строка состоящая из слов, разделенных пробелами. Составить строку состоящую из первых символов слов
В Delphi

Дана строка, состоящая из английских слов. Вывести строку, содержащую эти же слова, расположенные в алфавитном порядке
static void Main(string args) { Console.WriteLine("Введите...

Дана строка, состоящая из латинских слов, разделенных пробелами. Вывести строку
Дана строка, состоящая из латинских слов, разделенных пробелами. Вывести строку, содержащую эти же...

Вывести строку, состоящую из заданных слов, но расположенных в алфавитном порядке
Дана строка, состоящая из слов,разделённые одним пробелом. Вывести строку состоящую из этих же слов...

4
13095 / 5876 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
26.12.2012, 14:31 2
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
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Windows;
 
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Наибольшее количество слов.
  M = 100;
var
  S : String;
  Arr : array[1..M] of String; //Массив слов.
  i, j, k, Len, LenW : Integer;
begin
  //Переключение окна консоли на кодовую страницу CP1251 (Win-1251).
  //Если после переключения русские буквы показываются неверно,
  //следует открыть системное меню консольного окна - щелчком мыши в левом
  //верхнем углу окна консоли и выбрать:
  //Свойства - закладка "Шрифт" - выбрать шрифт: "Lucida Console".
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Len := Length(S);
    LenW := 0; //Длина очередного слова.
    j := 0; //Индекс для массива слов.
    for i := 1 to Len do begin //Перебор символов строки.
      if not (S[i] in D) then begin //Если символ не является разделителем.
        Inc(LenW); //Учитываем очередную букву в длине слова.
        //Отслеживаем конец слова и добавляем его в массив.
        if (i = Len) or (S[i + 1] in D) then begin
          Inc(j);
          Arr[j] := Copy(S, i - LenW + 1, LenW);
          LenW := 0; //Сброс длины слова.
        end;
      end;
    end;
 
    //Теперь сортируем массив по неубыванию (нестрогому возрастанию).
    //Сортировка методом вставок.
    for i := 1 to j do begin
      k := i;
      S := Arr[k];
      while (k > 1) and (Arr[k - 1] > S) do begin
        Arr[k] := Arr[k - 1];
        Dec(k);
      end;
      Arr[k] := S;
    end;
 
    //Распечатка результата.
    if j > 0 then begin
      Writeln('Перечень слов в алфавитном порядке:');
      for i := 1 to j do begin
        if i > 1 then Write(', ');
        Write(Arr[i]);
      end;
      Writeln;
    end else
      Writeln('В тексте нет слов.');
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Не по алфавиту будут распечатаны только слова, начинающиеся с буквы "Ё" ("ё"). Согласно кодировочной таблице: CP1251 (Windows-1251), слова, начинающиеся на букву "Ё" ("ё") окажутся перед словами на букву "А" ("а").
0
Страж леса
26 / 26 / 24
Регистрация: 13.12.2012
Сообщений: 146
26.12.2012, 15:21  [ТС] 3
нужно не в кансоле, а с помощью всяких едитов, баттонов.
0
13095 / 5876 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
26.12.2012, 15:53 4
В виде GUI приложения. На форму надо положить TButton и 2 TMemo. Для кнопки создать обработчик события 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
48
49
50
51
52
53
procedure TForm1.Button1Click(Sender: TObject);
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Наибольшее количество слов.
  M = 100;
var
  S : String;
  Arr : array[1..M] of String; //Массив слов.
  i, j, k, Len, LenW : Integer;
begin
  S := Memo1.Text;
 
  Len := Length(S);
  LenW := 0; //Длина очередного слова.
  j := 0; //Индекс для массива слов.
  for i := 1 to Len do begin //Перебор символов строки.
    if not (S[i] in D) then begin //Если символ не является разделителем.
      Inc(LenW); //Учитываем очередную букву в длине слова.
      //Отслеживаем конец слова и добавляем его в массив.
      if (i = Len) or (S[i + 1] in D) then begin
        Inc(j);
        Arr[j] := Copy(S, i - LenW + 1, LenW);
        LenW := 0; //Сброс длины слова.
      end;
    end;
  end;
 
  //Теперь сортируем массив по неубыванию (нестрогому возрастанию).
  //Сортировка методом вставок.
  for i := 1 to j do begin
    k := i;
    S := Arr[k];
    while (k > 1) and (Arr[k - 1] > S) do begin
      Arr[k] := Arr[k - 1];
      Dec(k);
    end;
    Arr[k] := S;
  end;
 
  //Распечатка результата.
  Memo2.Clear;
  if j > 0 then begin
    Memo2.Lines.Add('Перечень слов в алфавитном порядке:');
    S := '';
    for i := 1 to j do begin
      if i > 1 then S := S + ', ';
      S := S + Arr[i];
    end;
    Memo2.Lines.Add(S);
  end else
    Memo2.Lines.Add('В тексте нет слов.');
end;
2
Заблокирован
26.12.2012, 15:54 5
Leshiy27,
Да проще простого. Есть такая штука как StringList
Это список строк.
StringList.text - Это совокупность всех строк списка.
Если в список загрузить строку и сделать разделение, то каждое слово станет отдельной строкой в списке.
Теперь нужно пройтись по списку и к каждой строке в конец добавить условный символ. Ну скажем @
Потом дать команду на сортировку. После чего можете передвть список в строку, предварительно заменив все @ пробелом.
И увас получатся отсортированные слова.
В качестве команды разделения в StringList используется свойство DelimitedText
Оно по условному символу разделяет общую строку на строки списка. По умолчанию это пробел.
Если передать StringList текст и дать эту команду, то каждое слово станет строкой списка. И их можно сорировать. Но если передать слова обратно в текст, то они слипнутся. поскольку при разделении пробелы уничтожаются. Вот поэтому в конец каждой строки и липился условный знак, котрый в конце заменялся пробелом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2012, 15:54
Помогаю со студенческими работами здесь

Дана строка, состоящая из слов, разделенных пробелом. Определить и выписать самое длинное слово
Дана строка, состоящая из слов, разделенных пробелом. Определить и выписать самое длинное слово.

Дана строка, состоящая из слов на английском языке, разделенных пробелами. Вывести на экран эти слова в порядке алфавита
Дана строка, состоящая из слов на английском языке, разделенных пробелами. Вывести на экран эти...

Дана строка, состоящая из русских слов, разделенных пробелами. Вывести строку, содержащую эти же слова, разд
Дана строка, состоящая из русских слов, разделенных пробелами. Вывести строку, содержащую эти же...

Дана строка, состоящая из слов, разделенных одним или несколькими пробелами. Вывести строку, содержащую эти же слова
Помогите, напишите программу: Дана строка, состоящая из слов, разделенных одним или несколькими...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru