ПАСКАЛЬ.ПОМОГИТЕ ПОЖАЛУЙСТА.Дана не пустая последовательность слов из строчных русских...

0 голосов
44 просмотров

ПАСКАЛЬ.ПОМОГИТЕ ПОЖАЛУЙСТА.Дана не пустая последовательность слов из строчных русских букв,между соседними словами пробел, за последним словом точка. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят в каждое нечётное слово и в то же время не входят в каждое чётное слово. А ещё написать текст программы так, чтобы всё правильно работало если пробелов будет несколько. И если текст, который ввели не удолетворяет условиям, то должно выдасть ошибку. В тексте программы можно использовать подпрограммы, множества и т.д. Но нельзя использовать модули.


Информатика (159 баллов) | 44 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программа не работает, обновите версию!

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<br>    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.

Примеры
бодро    шагаем  дрова несем        друзья  товарищи
д

вместе весело    шагать    по   просторам
Нет звонких согласных, удовлетворяющих условию

   багряный   закат красный   восход
й,н,р
(150k баллов)
0 голосов

Var s:string;
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.

Пример:
Введите последовательность русских слов:
напечатать в   алфавитном порядке    звонкие буквы.
{н} 

(194k баллов)