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

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

07.06.2014, 01:02. Показов 7800. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан текст из строчных латинских букв, за которым следует точка. Напечатать: все звонкие согласные буквы, которые входят более чем в одно слово.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2014, 01:02
Ответы с готовыми решениями:

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

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

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

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

3
0 / 0 / 2
Регистрация: 07.06.2014
Сообщений: 27
07.06.2014, 04:15 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses crt;
type let=' а'..'я';
var sogl:set of let;
text: set of char;
c:char;
s:string;
i:byte;
begin
writeln('введите текст, заканчивающийся  точкой');
readln(s);
if s[length(s)]<>'.' then s:=s+'.';
text:=[];
sogl :=['б','в','г','д','ж','з','л','м','н','р'];
repeat
if s[i] in sogl then text:=text+[s[i]];
i:=i+1;
until s[i]='.';
for c:='a'  to 'я' do if c  in text then write(c);
readln;
end.
0
13095 / 5876 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
07.06.2014, 18:01 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

tanya2k, этот код делает совсем не то, что надо. Эта программа находит все звонкие согласные буквы, которые присутствуют в тексте. А нужно другое - найти те звонкие согласные буквы, которые входят более, чем в одно слово.

Вот, как можно решить эту задачу:
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
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
program Project1;
 
{Дан текст на русском языке. напечатать в алфавитном порядке все звонкие
согласные буквы, которые входят более чем в одно слово.
 
Примеры:
1.
Дана строка: 'бвг, джз, лмн, р'
Ответ: Нет ни одной буквы, которая входила бы более, чем в одно слово.
2.
Дана строка: 'бвгд, джзр, лмн, р'
Ответ: Перечень звонких согласных букв, которые входят более, чем
  в одно слово: 'д', 'р'.}
 
const
  {Множество разделителей слов.}
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  {Множество звонких согласных букв.}
  Da = [
    'Б', 'В', 'Г', 'Д', 'Ж', 'З', 'Л', 'М', 'Н', 'Р',
    'б', 'в', 'г', 'д', 'ж', 'з', 'л', 'м', 'н', 'р' ];
var
  S : String;
  Dw, Ds, Dr : set of Char;
  Ch : Char;
  i, Len : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Len := Length(S);
    Dw := []; {Множество согласных звонких букв в текущем слове.}
    Ds := []; {Множество согласных звонких букв, обнаруженных в предыдущих словах.}
    Dr := []; {Множество согласных звонких букв, которые присутствуют более, чем в одном слове.}
    for i := 1 to Len do {Перебор всех символов строки.}
      {Если символ не является разделителем, значит он принадлежит слову.}
      if not (S[i] in D) then
      begin
        if S[i] in Da then
          Dw := Dw + [S[i]]; {Добавляем символ во множество звонких согласных букв слова.}
        if (i = Len) or (S[i + 1] in D) then {Если обнаружен конец слова.}
        begin
          {Dw * Ds - это множество звонких согласных букв, которые есть в текущем
          слове и которые присутствуют в каких-то словах, обработанных ранее.
          Т. е., Dw * Ds - это, как раз, часть множества звонких согласных букв,
          которые присутствуют более, чем в одном слове. Так, обрабатывая слово
          за словом мы соберём сведения о всех таких буквах в тексте.}
          Dr := Dr + Dw * Ds;
          Ds := Ds + Dw;
          Dw := [];
        end;
      end;
 
    {Распечатка звонких согласных букв, которые входят более, чем в одно слово.}
    if Dr = [] then
      Writeln('Нет ни одной буквы, которая входила бы более, чем в одно слово.')
    else
    begin
      Writeln('Перечень звонких согласных букв, которые входят более, чем в одно слово:');
      for Ch := 'Б' to 'р' do
        if Ch in Dr then
          Write(Ch, ' ');
      Writeln;
    end;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
13095 / 5876 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
09.06.2014, 01:10 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Добавил приведение букв к верхнему регистру.
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
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
74
75
76
77
78
79
80
81
82
83
84
85
86
program Project1;
 
{Дан текст на русском языке. Напечатать в алфавитном порядке все звонкие
согласные буквы, которые входят более, чем в одно слово.
 
Примеры:
1.
Дана строка: 'бвгаи, джзое, лмн, раиое'
Ответ: Нет ни одной буквы, которая входила бы более, чем в одно слово.
2.
Дана строка: 'бвгдаи, джзраи, лмн, раиое'
Ответ: Перечень звонких согласных букв, которые входят более,
  чем в одно слово: 'Д', 'Р'.}
 
{Перевод букв строки в верхний регистр.}
procedure UpCaseRu(var S : String);
var
  i : Integer;
begin
  for i := 1 to Length(S) do
    if S[i] in ['а'..'п'] then
      S[i] := Chr(Ord(S[i]) - 32)
    else if s[i] in ['р'..'я'] then
      S[i] := Chr(Ord(S[i]) - 80)
    else if S[i] = 'ё' then
      S[i]:='Ё'
    else
      S[i] := UpCase(S[i]);
end;
 
const
  {Множество разделителей слов.}
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  {Множество звонких согласных букв.}
  Da = ['Б', 'В', 'Г', 'Д', 'Ж', 'З', 'Л', 'М', 'Н', 'Р'];
var
  S : String;
  Dw, Ds, Dr : set of Char;
  Ch : Char;
  i, Len : Integer;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    UpCaseRu(S); {Перевод букв строки в верхний регистр.}
 
    Len := Length(S);
    Dw := []; {Множество согласных звонких букв в текущем слове.}
    Ds := []; {Множество согласных звонких букв, обнаруженных в предыдущих словах.}
    Dr := []; {Множество согласных звонких букв, которые присутствуют более, чем в одном слове.}
    for i := 1 to Len do {Перебор всех символов строки.}
      {Если символ не является разделителем, значит он принадлежит слову.}
      if not (S[i] in D) then
      begin
        if S[i] in Da then
          Dw := Dw + [S[i]]; {Добавляем символ во множество звонких согласных букв слова.}
        if (i = Len) or (S[i + 1] in D) then {Если обнаружен конец слова.}
        begin
          {Dw * Ds - это множество звонких согласных букв, которые есть в текущем
          слове и которые присутствуют в каких-то словах, обработанных ранее.
          Т. е., Dw * Ds - это, как раз, часть множества звонких согласных букв,
          которые присутствуют более, чем в одном слове. Так, обрабатывая слово
          за словом мы соберём сведения о всех таких буквах в тексте.}
          Dr := Dr + Dw * Ds;
          Ds := Ds + Dw;
          Dw := [];
        end;
      end;
 
    {Распечатка звонких согласных букв, которые входят более, чем в одно слово.}
    if Dr = [] then
      Writeln('Нет ни одной буквы, которая входила бы более, чем в одно слово.')
    else
    begin
      Writeln('Перечень звонких согласных букв, которые входят более, чем в одно слово:');
      for Ch := 'Б' to 'Р' do
        if Ch in Dr then
          Write(Ch, ' ');
      Writeln;
    end;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2014, 01:10
Помогаю со студенческими работами здесь

Напечатать в алфавитном порядке все звонкие согласные, которые входят в слово 2 и более раз
Звонкие согласные- б в г д ж з л м н р. Case написал а со множеством застрял. Помогите плиз.

Напечатать в алфавитном порядке: Все звонкие согласные, которые входят хотя бы в одно четное слово.
Program mn_3; uses crt; type let=' а'..'я'; var sogl:set of let; text: set of char; c:char;...

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

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


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

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

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