3 / 3 / 0
Регистрация: 24.04.2010
Сообщений: 33
1

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

03.10.2011, 23:26. Показов 10618. Ответов 2

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

2.Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Найти количество слов, которые содержат ровно три буквы А или а
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2011, 23:26
Ответы с готовыми решениями:

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

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

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

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

2
13094 / 5875 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
04.10.2011, 08:47 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Задача 1.
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
program Project1;
 
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, SRes : String;
  i, Len, Pos1 : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Len := Length(S);
    SRes := '';
    Pos1 := 0;
    //Перебор символов строки в направлении справа-налево.
    for i := Len downto 1 do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Отслеживаем конец слова.
      if (i = Len) or (S[i + 1] in D) then Pos1 := i;
      //Отслеживаем начало слова.
      if (i = 1) or (S[i - 1] in D) then begin
        //Добавление пробела.
        if SRes <> '' then SRes := Sres + ' ';
        //Добавляем слово к строке.
        SRes := SRes + Copy(S, i, Pos1 - i + 1);
      end;
    end;
 
    Writeln('Ответ:');
    Writeln(SRes);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
Задача 2.
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
39
40
program Project1;
 
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Искомые буквы. - Русская и английская буква "А".
  Da = ['А', 'а', 'A', 'a'];
var
  S : String;
  i, Len, CntA, CntW : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Len := Length(S);
    CntA := 0;
    CntW := 0;
    for i := 1 to Len do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Ведём подсчёт искомых букв внутри слова.
      if S[i] in Da then Inc(CntA);
      //Отслеживаем конец слова.
      if (i = Len) or (S[i + 1] in D) then begin
        //Подсчёт искомых слов.
        if CntA = 3 then Inc(CntW);
        //Сброс счётчика букв.
        CntA := 0;
      end;
    end;
 
    Writeln('Количество слов, которые содержат ровно по три буквы');
    Writeln('из множества [''А'', ''а'', ''A'', ''a''] равно:');
    Writeln(CntW);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
Почетный модератор
64276 / 47575 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
04.10.2011, 09:41 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Альтернативный вариант, ближе к "телу".
1.

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
39
uses crt;
const ds=['А'..'п','р'..'ё',' '];{допустимые символы, русские буквы и пробел,
                                  это для Турбо, для АВС ['А'..'я','Ё','ё',' ']}
var c:char;
    s,s1,s2:string;
    i,j:byte;
begin
clrscr;
writeln('Введите строку из русских слов, разделенных пробелами, окончание ввода Enter:');
s:='';
repeat
c:=readkey;
if c in ds then
 begin
  s:=s+c;
  write(c);
 end;
if c=#13 then writeln;
until c=#13;
s2:='';{новая строка}
i:=length(s);{начнем с конца}
while i>=1 do
{если буква и она последняя или за ней пробел}
if(s[i]<>' ')and((i=length(s))or(s[i+1]=' '))then
 begin
  s1:='';{новое слово}
  j:=i;
  while(j>=1)and(s[j]<>' ') do{пока не пробел или не начало строки}
   begin
    s1:=s[j]+s1;{составляем слово, добавляя буквы в начало}
    j:=j-1;{идем назад}
   end;
  s2:=s2+s1+' ';{добавляем это слово и пробел}
  i:=i-length(s1);{перешагиваем через слово}
 end
else i:=i-1;{если пробел, пропускаем}
write(s2);
readln
end.
Добавлено через 7 минут
2.
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
39
40
uses crt;
const ds=['А'..'п','р'..'ё',' '];
var c:char;
    s,s1:string;
    i,j,k,b:byte;
begin
clrscr;
writeln('Введите строку из русских слов, разделенных пробелами, окончание ввода Enter:');
s:='';
repeat
c:=readkey;
if c in ds then
 begin
  s:=s+c;
  write(c);
 end;
if c=#13 then writeln;
until c=#13;
k:=0;
i:=1;{здесь идем с начала}
while i<=length(s) do
if(s[i]<>' ')and((i=1)or(s[i-1]=' '))then
 begin
  s1:='';
  j:=i;
  while(j<=length(s))and(s[j]<>' ') do
   begin
    s1:=s1+s[j];{буквы добавляем в конец}
    j:=j+1;
   end;
  b:=0;
  for j:=1 to length(s1) do
  if s1[j] in ['А','а'] then b:=b+1;
  if b=3 then k:=k+1;
  i:=i+length(s1);
 end
else i:=i+1;
write('Количество слов с тремя буквами Аа=',k);
readln
end.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2011, 09:41
Помогаю со студенческими работами здесь

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

Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в обратном порядке
Здравствуйте. можете прокомментировать эту программу? #include &quot;stdafx.h&quot; #include &lt;string&gt;...

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

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


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

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

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