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

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

10.03.2010, 12:29. Показов 5147. Ответов 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
Const glsogl =['п', 'ф', 'к', 'т', 'ш', 'с', 'м', 'н', 'х', 'ч', 'ц', 'щ'];
      razdel =[' ', ',', '.'];
 
Var I : Integer;
    K : Boolean;
    S : String;
    T : String;
    C : Char;
    M : Array ['а'..'я'] of Boolean;
 
Procedure Control(W:String; ChetNechet:Boolean);
Begin
     //WriteLn (ChetNechet:6, ' ', W);
 
     For C := 'а' To 'я' Do
     Begin
          If (ChetNechet and (pos(C,W) <> 0)) Then M[C] := true;
          If ((not ChetNechet) and (pos(C,W) = 0)) Then M[C] := False;
     End;
End;
 
Begin
     ClrScr;
     WriteLn ('Enter string:');
     ReadLn (S);
     If Length(S) = 0
     Then
         Begin
              S := 'Вывести на печать в алфавитном порядке глухие согласные';
              WriteLn(S);
         End
     Else
         If S[Length(S)] <> '.' Then S := S + '.';
 
     For C := 'а' To 'я' Do
     Begin
           M[C] := True;
     End;
 
     I := 1;
     K := False;
     T := '';
     While S[I]<> '.' Do
     Begin
          If (S[I] in razdel)
          Then
              Begin
                   If Length(T) <> 0 Then
                   Begin
                        Control(T, K);
                        T := '';
                        K := not K;
                   End;
              End
          Else T:=T+S[I];
          Inc(I);
     End;
     Control(T, K);
 
      For C := 'а' To 'я' Do
          If (C in glsogl) and M[C]
             Then WriteLn(C, ' ', M[C], ' ');
      WriteLn;
 
     ReadLn;
End.
помогите пожайлуста

Добавлено через 10 часов 45 минут
помогите пожайлуста

Добавлено через 16 секунд
помогите пожайлуста
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2010, 12:29
Ответы с готовыми решениями:

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

Напечатать в алфавитном порядке все глухие согласные буквы, которые не входят только в одно слово
Помогите решить задачу с помощью &quot;записи - RECORD&quot; Дан текст на русском языке. Напечатать в...

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

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

4
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
10.03.2010, 15:18 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
41
42
43
44
45
46
47
48
49
50
uses crt;
const
gl=['к','п','с','т','ф','х','ц','ч','ш','щ','К','П','С','Т','Ф','Х','Ц','Ч','Ш','Щ'];{глухие согласные}
bk:string='КкПпСсТтФфХхЦцЧчШшЩщ';
type mnoz=set of char;
var  s,s1:string;
     m:array[1..100] of mnoz;{массив множеств}
     mn_ob,mn,mn1:mnoz;
     n,i,j:byte;
begin
clrscr;
repeat
writeln('Введите текст на русском языке, между словами пробелы:');
readln(s);
if pos(' ',s)=0 then
writeln('В предложении только одно слово. Повторите ввод.');
until pos(' ',s)>0;
s:=s+' ';{}
mn_ob:=[];
for i:=1 to length(s) do
if s[i] in gl then mn_ob:=mn_ob+[s[i]];
n:=0;
while pos(' ',s)>0 do{создаем массив множеств}
 begin
  s1:=copy(s,1,pos(' ',s)-1);{копируем очередное слово}
  n:=n+1;{считаем}
  m[n]:=[];{создаем множество}
  for j:=1 to length(s1) do
  if s1[j] in gl then m[n]:=m[n]+[s1[j]];{из его букв по условию}
  delete(s,1,pos(' ',s));{удаляем это слово}
 end;
mn1:=[];{множество цифр, не входящих только в одно число}
for i:=1 to n do{для каждого множества }
 begin
  mn:=[];
  for j:=1 to n do
  if j<>i then mn:=mn+m[j];{делаем множество из букв, котoрые входят в другие числа}
  mn1:=mn1+(m[i]-mn);{вычитаем из даннго множества общее множество
                      и остаток записываем в новое}
 end;
if mn1=[] then writeln('Цифр, которые не входят только в одно число, нет!')
else
 begin
  writeln('Цифры, которые не входят только в одно число:');
  for i:=1 to length(bk) do{идем по алфавиту,
  если буква есть в общем множестве и ее нет в котором по разу, выводим}
  if (bk[i] in mn_ob)and not (bk[i] in mn1) then write(bk[i],' ');
 end;
readln
end.
2
13097 / 5878 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.03.2010, 16:15 3
Только в одном месте "not" надо убрать:
Pascal
1
2
3
  (*Заменить:*)
  (*if (bk[i] in mn_ob) and not (bk[i] in mn1) then write(bk[i],' ');*)
  if (bk[i] in mn_ob) and (bk[i] in mn1) then write(bk[i],' ');
2
13 / 13 / 0
Регистрация: 24.06.2009
Сообщений: 28
12.03.2010, 01:16  [ТС] 4
спасибо всем но мне тут сказали решить горазда проще и задание изменили надо вывести все слова из строки в которых есть глухие согласные
1
13097 / 5878 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
12.03.2010, 09:41 5
Предлагаю такое решение:
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
74
75
76
77
78
79
program Project1;
 
(*Возвращает заглавный вариант буквы для кодовой страницы CP866.*)
function UpperCase(const aCh : Char) : Char;
begin
  case aCh of
  'а'..'п' : UpperCase := Char( Ord(aCh) - $20);
  'р'..'я' : UpperCase := Char( Ord(aCh) - $50);
  'ё'      : UpperCase := 'Ё';
  else
    UpperCase := UpCase(aCh);
  end;
end;
 
(*Находит в тексте aStr слова, содержащие глухие согласные буквы кириллицы,
и распечатывает их.*)
function GetWords(const aStr : String) : String;
const
  (*Множество разделителей.*)
  Delims = [' ', '.', ',', ':', ';', '!', '?', '-', Char(9)];
  (*Множество глух. согласных букв кириллицы.*)
  Ab = ['К', 'П', 'С', 'Т', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ'];
var
  (*Индекс символов в строке.*)
  i : Integer;
  (*Индекс конца очередного слова.*)
  Pos2 : Integer;
  (*Отдельные слова в тексте.*)
  StrTmp : String;
  (*Результирующая строка.*)
  StrRes : String;
  (*Флаг, показывающий - найдена ли хотябы одна глухая согласная буква в слове.*)
  IsFound : Boolean;
begin
  StrRes := '';
  StrTmp := '';
  IsFound := False;
  Pos2 := 0;
  for i := 1 to Length(aStr) do begin
    (*Если очередной символ является разделителем - пропускаем итерацию.*)
    if aStr[i] in Delims then Continue;
 
    (*Обрабатываем очередную букву слова.*)
    StrTmp := StrTmp + aStr[i];
    if UpperCase(aStr[i]) in Ab then IsFound := True;
    //Отслеживаем конец слова.
    if i = Length(aStr) then
      Pos2 := i
    else if aStr[i + 1] in Delims then
      Pos2 := i
    ;
    //Если конец слова найден.
    if Pos2 > 0 then begin
      if IsFound then begin
        if StrRes <> '' then StrRes := StrRes + ', ';
        StrRes := StrRes + StrTmp;
      end;
      StrTmp := '';
      IsFound := False;
      Pos2 := 0;
    end; //if Pos2 > 0
  end; //for i
 
  GetWords := StrRes;
end;
 
var
  StrSrc, StrRes, StrTmp : String;
begin
  repeat
    Writeln('Введите строку:');
    Readln(StrSrc);
    StrRes := GetWords(StrSrc);
    Writeln('Слова, в которых встречаются глухие согласные буквы:');
    Writeln(StrRes);
    Writeln('Повторить - ENTER. Выход - любой символ + ENTER.');
    Readln(StrTmp);
  until StrTmp <> '';
end.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2010, 09:41
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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