Егер енгізілген жолдағы сөздер саны бірден артық болса, онда əрбір жаңа сөз нəтижелік жиынды төмендегідей етіп өзгертетін болады:
əр сөзге кіретін дауысты əріптер жиыны, осыған дейін та-былған сөздерге кіретін дауысты əріптер жиыны мен res1 З mns1 сөзінің дауысты əріптер жиынының қиылысуына тең болады;
бірнеше сөзге кіретін дауысты əріптер жиыны – res4 жаңа сөзде қайталанатын дауысты əріптер санына өседі (бірігу):
res4 жəне (res3 # mns1); бір сөйлемдегі дауысты əріптер жиыны – res3 сөздегі дауы-сты əріптер санына өседі (бірігу):
res3 З mns1
142
тек бір сөзге кіретін res2 – дауысты əріптер жиынын, бар-лық сөздерді өңдегеннен кейін, бір сөйлемдегі дауысты əріптеры жиыны мен бірнеше сөзге кіретін дауысты əріптер жиынының айырмасы ретінде анықтаймыз:
res1 / res4 Program ex;
Type setchar=set of char;
Const G:setchar=['а','я','у','ю','э','е','о ','ё','и','ы']; { «дауысты дыбыстар жиыны « типтік тұрақты}
Var res1, {əр сөзге кіретін дауысты əріптер жиыны}
res2, {тек бір сөзе кіретін дауысты əріптер жиыны}
res3, {сөйлемнің дауысты əріптер жиыны} res4, {бірнеше сөзге кіретін дауысты əріптер жиыны}
mns1:setchar; {ағымдағы сөздің дауысты əріптер жиыны}
st,slovo:string; ch:char; i,k:integer; fi rst:boolean; Begin
WriteLn('Бастапқы жолды енгізіңіз:'); ReadLn(st); {бастапқы жолды оқимыз} st:=st+' '; {өңдеу жеңіл болу үшін жолдың соғына бос орын қосамыз}
first:=true; {«бірінші жол» белгісі}
while st<>'' do {сөзді қиып алу жəне өңдеу ци-
клы}
begin
k:=pos(' ',st);
slovo:=copy(st,1,k-1); {қиып алынған сөз}
Delete(st,1,k); {сөзді жолдан алып тастаймыз}
{сөзге кіретін дауысты əріптер жиынын
анықтаймыз}
mns1:=[]; {бастапқы күй «бос жиын»} for i:=1 to k-1 do
143
if slovo[i] in G then {егер дауысты дыбыс бол-са, онда}
mns1:=mns1+[slovo[i]]; {жиынға қосамыз} {нəтижелік жиындарды құрастырамыз}
if first then {егер бірінші сөз болса, онда} begin
res1:=mns1; {əр сөзге кіреді} res2:=mns1; {тек бір сөзге кіреді} res3:=mns1; {кездескен дауысты əріптер} res4:=[]; {бірнеше сөзге кіреді}
first:=false; {«бірінші сөз» белгісін алып та-
стаймыз}
end
else {егер бірінші сөз болмаса, онда} begin
res1:=res1*mns1; {əр сөзге кіретіндер} res4:=res4+res3*mns1; {бірнеше сөзге кіретіндер}
res3:=res3+mns1; {кездескен дауысты əріптер}
end
end;
res2:=res3-res4; {тек бір сөзге кіретіндер} {сқйлемді өңдеу нəтижелерін шығарамыз} WriteLn('Əр сөзге кіретін дауысты əріптер жиы-ны:');
for ch:=#0 to #255 do if ch in res1 then
Write(ch:2);
WriteLn;
WriteLn('Тек бір сөзге кіретін дауысты əріптер жиыны:');
for ch:=#0 to #255 do if ch in res2 then
Write(ch:2);
WriteLn;
WriteLn('кем дегенде бір сөзге кіретін дауысты əріптер жиыны:');
for ch:=#0 to #255 do if ch in res3 then Write(ch:2);
144
WriteLn;
WriteLn('Бірнеше сөзге кіретіндер дауысты əріптер жиыны:');
for ch:=#0 to #255 do if ch in res4 then
Write(ch:2);
WriteLn;
End.