![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#2
|
|||
|
|||
|
А что тебя не устроило в том варианте, что я тебе ранее скидывал? (И нет смысла для одного и того же вопроса заводить новые темы, можно и старую было продолжать...)
вот это не правильно: if slovo[j]='b,d,g,j,n,m,r,v,z,w' then |
|
#3
|
|||
|
|||
|
Вообще то это совсем другое задание
найти Все глухие согласные, которые входят в слова, не содержащие звонких согласных букв. А там было только лишь про 1 и последнее слово |
|
#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
|
|||
|
|||
|
Спасибо!!!!!!!!!!!!!!!!!!
|
|
#6
|
|||
|
|||
|
Обрати внимание, обновил алгоритм...
|