![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Дана непустая последовательность слов из строчных латинских букв, слова разделены пробелами. Вывести: Все глухие согласные, которые входят в слова, не содержащие звонких согласных букв.
Мой вариант... но он не работает ![]() ![]() ![]() Код:
{$APPTYPE CONSOLE} uses SysUtils; var mn1,mn2: set of char; s,slovo:string; i,j,k,ns,ks:integer; c:char; begin mn1:=[]; mn2:=[]; write('inter string '); readln(s); while i<= length(s) do begin while(s[i]=' ')and(i<=length(s)) do i:=i+1; ns:=i; while(s[i]<>' ')and(i<=length(s))do i:=i+1; ks:=i; slovo:=copy(s,ns,ks-ns); while j<= length(slovo) do if slovo[j]='b,d,g,j,n,m,r,v,z,w' then for k:=1 to length(slovo) do mn1:=mn2+[slovo[j]]; for j:=1 to length(slovo) do mn2:=mn2+[slovo[j]]; mn2:=mn2*['c','f','h','k','l','q','p','s','t','x']; for c:=chr(0) to chr(255) do if c in mn2 then write(c,' '); end; Asira |
#2
|
|||
|
|||
![]() А что тебя не устроило в том варианте, что я тебе ранее скидывал? (И нет смысла для одного и того же вопроса заводить новые темы, можно и старую было продолжать...)
вот это не правильно: if slovo[j]='b,d,g,j,n,m,r,v,z,w' then |
#3
|
|||
|
|||
![]() Вообще то это совсем другое задание
найти Все глухие согласные, которые входят в слова, не содержащие звонких согласных букв. А там было только лишь про 1 и последнее слово Asira |
#4
|
|||
|
|||
![]() Держи)
Написал с функциями, для более простого понимания, можешь их объеденить в один алгоритм, если потребуется. Код:
{$APPTYPE CONSOLE} uses SysUtils, Classes; type TSetChar = Set of char; function WordIsHaveChars(const aWord:String; const aChars:TSetChar):boolean; //возвращает истину, если в слове есть хотя бы один символ из множества var b:byte; begin Result:=false; if Length(aWord) > 0 then for b:=1 to Length(aWord) do if aWord[b] in aChars then begin Result:=false; exit; end; end; function WordGetHaveChars(const aWord:String; const aChars:TSetChar):TSetChar; //возвращает символы, которые встречаются и в слове и во множестве var b:byte; begin Result:=[]; if Length(aWord) > 0 then for b:=1 to Length(aWord) do if aWord[b] in aChars then Result:=Result+[aWord[b]]; end; var Str, tmpStr:String; i:integer; ResChars:TSetChar; c:char; begin Write('Enter string:'); Readln(Str); tmpStr:=''; ResChars:=[]; //парсим строку на слова, попутно прогоняя их через функции if Length(Str) > 0 then for i:=1 to Length(Str)+1 do if (Str[i] <> #32) and (i <= Length(Str)) then tmpStr:=tmpStr+Str[i] else if Length(tmpStr) > 0 then begin if not WordIsHaveChars(tmpStr,['b','d','g','j','n','m','r','v','z','w']) then ResChars:=ResChars+WordGetHaveChars(tmpStr,['c','f','h','k','l','q','p','s','t','x']); tmpStr:=''; end; //выводим результат for c:=chr(0) to chr (255) do if c in ResChars then write(c,' '); Readln; end. Последний раз редактировалось Asinkrit, 30.12.2009 в 18:19. |
#5
|
|||
|
|||
![]() Спасибо!!!!!!!!!!!!!!!!!!
Asira |
#6
|
|||
|
|||
![]() Обрати внимание, обновил алгоритм...
|
#7
|
|||
|
|||
![]() Да я заметила............... вот бы мне так программировать......
Asira |
#8
|
|||
|
|||
![]() Все дело практики, чем больше пишешь, тем лучше понимаешь что пишешь)
|