-5 / 0 / 0
Регистрация: 03.05.2017
Сообщений: 12
1

Вывести все слова строки в алфавитном порядке

26.08.2017, 11:03. Показов 3412. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задана строка символов. Группы символов, разделенные пробелом и несодержащие пробелов внутри себя, будем называть словами. Вывести все слова строки в алфавитном порядке. Например, задана строка : ‘Я учусь программировать на языке Турбо-Паскаль’
Результат работы программы:
Турбо-Паскаль Я на программировать учусь языке
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2017, 11:03
Ответы с готовыми решениями:

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

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

Строки. Вывести в алфавитном порядке все согласные, которые входят во все слова
Вводится не пустая строка из строчных русских букв, не более 79 символов. Определённые слова в ней...

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

2
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
26.08.2017, 11:52 2
Лучший ответ Сообщение было отмечено san9ka3ak как решение

Решение

Pascal
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
uses crt;
var s:string; {строка}
    a:array[1..200] of string;{массив слов}
    n,i,j:byte;
begin
clrscr;
writeln('Введите строку из слов, разделенных пробелами');
readln(s);
s:=' '+s+' '; {добавим пробел в начало и в конец для удобства}
n:=0;{количество слов}
i:=2;{начнем со 2 символа, 1 пробел}
while i<=length(s) do
if (s[i]<>' ')and(s[i-1]=' ') then {если не пробел, а перед ним пробел}
 begin
  inc(n); {новое слово}
  a[n]:='';{будем его составлять}
  j:=i;
  while s[j]<>' ' do{пока не пробел}
   begin
    a[n]:=a[n]+s[j];
    inc(j);
   end;
  i:=i+length(a[n]); {перешагнем через слово}
 end
else inc(i);{пропускаем пробелы}
{сортируем массив по возрастаению=по алфавиту как в примере, т.е а>Я}
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
 begin
  s:=a[i];
  a[i]:=a[j];
  a[j]:=s;
 end;
for i:=1 to n do
write(a[i],' ');
readln
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,076
Записей в блоге: 1
26.08.2017, 16:50 3
Чуть более экономный по памяти вариант:
Pascal
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
function StrComp(p, q: PChar): Integer;
begin
  while (p^<>#0) and (p^=q^) do begin Inc(p); Inc(q); end;
  scmp:=Ord(p^)-Ord(q^);
end;
 
var
  s: String; dummy: Char;
  w: array [1..255 div 2] of PChar;
  p: PChar;
  n, i, j: Integer;
begin
  {s:='Я учусь программировать на языке Турбо-Паскаль';}
  Write('Строка: '); ReadLn(s);
  n:=0; p:=@s[1]; (p+Length(s)+1)^:=#0;
  while p^<>#0 do begin
    while p^=' ' do Inc(p);
    if p^=#0 then Break;
    Inc(n); w[n]:=p;
    while not (p^ in [#0,' ']) do Inc(p);
    if p^=#0 then Break;
    p^:=#0; Inc(p);
  end;
  for i:=1 to n-1 do
    for j:=i+1 to n do
      if StrComp(w[i],w[j])>0 then begin
        p:=w[i]; w[i]:=w[j]; w[j]:=p;
      end;
  for i:=1 to n do Write(w[i],' ');
  ReadLn;
end.
или, если можно использовать модуль strings, то
Pascal
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
uses strings;
var
  s: String; dummy: Char;
  w: array [1..255 div 2] of PChar;
  p: PChar;
  n, i, j: Integer;
begin
  {s:='Я учусь программировать на языке Турбо-Паскаль';}
  Write('Строка: '); ReadLn(s);
  n:=0; p:=@s[1]; (p+Length(s)+1)^:=#0;
  while p^<>#0 do begin
    while p^=' ' do Inc(p);
    if p^=#0 then Break;
    Inc(n); w[n]:=p;
    while not (p^ in [#0,' ']) do Inc(p);
    if p^=#0 then Break;
    p^:=#0; Inc(p);
  end;
  for i:=1 to n-1 do
    for j:=i+1 to n do
      if StrComp(w[i],w[j])>0 then begin
        p:=w[i]; w[i]:=w[j]; w[j]:=p;
      end;
  for i:=1 to n do Write(w[i],' ');
  ReadLn;
end.
0
26.08.2017, 16:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2017, 16:50
Помогаю со студенческими работами здесь

Строки. Распечатать все слова строки (в столбик) в алфавитном порядке
Помогите пожалуйста((( 1.Задана фраза.Распечатать все слова этой фразы (в столбик) в алфавитном...

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

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

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


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

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

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