Задан текст из маленьких латинских букв в конце стоит точка. Напечатать в алфавитном порядке все согласные буквы которые не входят ни в одно слово с использованием процедуры.
Вот мой вариант решения: В процесе решения зашёл в тупик, нужна ваша помощь.
type mmm=set of char;
var s1:string; h:set of char;
procedure rasbuk(s:string);
var i:integer;j,t:char;n:integer; ss, dd:mmm;
begin
ss:=[];
dd:=[];
for i:=1 to length(s) do
while s[i] = '.' do
begin
while s[i] = ' ' do
if s[i] in h then ss:=ss+[s[i]];
dd:=dd-ss;
for j:='a' to 'z' do
begin
n:=0;
for i:=1 to length(s) do
if j=s[i] then n:=n+1;
if n>=2 then writeln(j);
end;
writeln('Bykvi ne vhodyawie v tekst');
for t:='a' to 'z' do
if t in dd then write(t);
end;
begin
writeln('vvedite tekst');
readln(s1);
h:=['a'..'z'];
rasbuk(s1);
readln;
end; end.
На самом деле все гораздо проще (для поставленной тобой задачи и только для нее): достаточно заполнить множество всеми согласными, а потом пройти по всем буквам текста, и удалить каждую из них из этого множества... Все, что в множестве осталось - согласные, не используемые ни в одном слове...
Но это "поверхностное" решение, предупреждаю сразу... Если тебе потом понадобится написать программу, находящую все согласные, которые не встречаются в КАЖДОМ слове, к примеру, то программу придется переписывать полностью... Не"поверхностное" решение - разбивать строку на слова, и для каждого слова создавать множество входящих в него согласных... Тогда при изменении задания надо будет лишь чуть-чуть подправить программу...
Выбирай, что тебе больше нравится...
type
mmm=set of char;
var
s1:string;
h:set of char;
procedure rasbuk(s:string);
var
i:integer;
j,t:char;
n:integer;
ss, dd:mmm;
begin
ss:=[];
dd:=[];
for i:=1 to length(s) do while s[i]='.' do begin
while s[i]=' ' do if s[i] in h then ss:=ss+[s[i]];
dd:=dd-ss;
for j:='a' to 'z' do begin
n:=0;
for i:=1 to length(s) do if j=s[i] then n:=n+1;
if n>=2 then writeln(j);
end;
writeln('Bykvi ne vhodyawie v tekst');
for t:='a' to 'z' do if t in dd then write(t);
end;
begin
writeln('vvedite tekst');
readln(s1);
h:=['a'..'z'];
rasbuk(s1);
readln;
end;
end.
while s[i]='.' do begin
while s[i]=' '
while s[i]='.' do begin
while s[i]=' '
program z1;
type
mmm=set of char;
var
s1:string;
h:set of char;
procedure rasbuk(s:string);
var
i:integer;
j,t:char;
n:integer;
ss, dd:mmm;
begin
ss:=[];
dd:=[];
for i:=1 to length(s) do while s[i]='.' do begin
while s[i]=' ' do if s[i] in h then ss:=ss+[s[i]];
dd:=dd-ss;
for j:='a' to 'z' do begin
n:=0;
for i:=1 to length(s) do if j=s[i] then n:=n+1;
if n>=2 then writeln(j);
end;
writeln('Bykvi ne vhodyawie v tekst');
for t:='a' to 'z' do if t in dd then write(t);
end;
end;
begin
writeln('vvedite tekst');
readln(s1);
h:=['a'..'z'];
rasbuk(s1);
readln;
end.
pos('.',s);выведет номер позиции точки в строке