26.05.2022, 21:42
|
Прохожий
|
|
Регистрация: 24.05.2022
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
|
|
Некорректная работа программы
Условие: Текст дан. Выведите в алфавитном порядке все глухие согласные буквы, не входящие только в одно слово;
Проблема: Должен выводить повторяющиеся буквы в алфавитном порядке, но выводит только одну букву, ближайшую к концу алфавита
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
gl=['к','п','с','т','ф','х','ц','ч','ш','щ'];
bk:string='кпстфхцчшщ';
type mnoz=set of char;
var s,s1:string;
m:array[1..100] of mnoz;
mn,mn1:mnoz;
n,i,j:byte;
word: ShortString;
begin
s := LowerCase(Memo1.Text);
s:=s+' ';
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];
mn1:=mn1+(m[i]*mn);
end;
if mn1=[] then
Memo2.Lines[0] := 'Букв, которые не входят только в одно слово, нет!';
begin
for i:=1 to length(bk) do
if (bk[i] in mn1) then
word := bk[i] + ' ';
end;
Memo2.Text := word;
end;
|