Паскаль. дана не пустая последовательность слов из строчных букв,между соседними словами пробел, за последним словом точка. напечатать в алфавитном порядке все звонкие согласные буквы, которые входят в каждое нечётное слово и в то же время не входят в каждое чётное слово. а ещё написать текст программы так, чтобы всё правильно работало если пробелов будет несколько. и если текст, который ввели не удолетворяет условиям, то должно выдасть ошибку. в тексте программы можно использовать подпрограммы, множества и т.д. но нельзя использовать модули.
m,mn,m1,m2:set of char;
i,k,l:integer;
begin
writeln('Введите последовательность русских слов:');
readln(s);
m:=['Б','б','В','в','Г','г','Д','д','Ж','ж','З','з','Й','й','Л','л','М','м','Н','н','Р','р'];
k:=0;
for i:=1 to length(s) do
if not (s[i] in ['А'..'Я','а'..'я',' ','.']) then k:=k+1;
if k>0 then writeln('Ошибка ввода')
else begin
while pos(' ',s)>0 do delete(s,pos(' ',s),1);
if s[length(s)]='.' then s[length(s)]:=' ';
k:=0; mn:=[]; m1:=m; m2:=m;
for i:=1 to length(s) do
begin
mn:=mn+[s[i]];
if s[i]=' ' then
begin
k:=k+1;
if k mod 2=1 then m1:=m1*mn else m2:=m2*mn;
mn:=[];
end;
end;
mn:=m1-m2;
print(mn);
end;
end.
Пример:
Введите последовательность русских слов:
напечатать в алфавитном порядке звонкие буквы.
{н}
// Внимание! Если программа не работает, обновите версию!
begin
var L:='бвгджзйлмнр'.ToList;
var s:=ReadlnString;
var p:=Pos('.',s);
if p>0 then s:=s[:p];
var aw:=s.ToWords;
var i:=1;
while i<=aw.Length-1 do begin
var L1:=L.ToList;
foreach var c in L1 do
if not aw[i-1].Contains(c) then L.Remove(c)
else
if aw[i].Contains(c) then L.Remove(c);
i+=2
end;
if L.Count>0 then L.Println(',')
else Writeln('Нет звонких согласных, удовлетворяющих условию')
end.
Примеры
бодро шагаем дрова несем друзья товарищи
д
вместе весело шагать по просторам
Нет звонких согласных, удовлетворяющих условию
багряный закат красный восход
й,н,р