2. определите выражения, соответствующие каждому из деревьев, в «нормальном» виде со скобками (эту форму называют инфиксной – операция записывается между данными). постройте для каждого из них постфиксную форму.
а)
б)
в)
инфиксная форма: постфиксная форма:
а) б) в) а) б) в)
3. постройте деревья, соответствующие следующим арифметическим выражениям:
а) (a+b)*(c+2*d)
б) (2*a-3*d)*c+2*b в) (a+b+2*c)*d
г) 3*a-(2*b+c)*d
а)
б)
в)
г)
запишите эти выражения в префиксной и постфиксной формах.
префиксная форма: постфиксная форма:
а) б) в) г) а) б) в) а)
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.
Примеры
бодро шагаем дрова несем друзья товарищи
д
вместе весело шагать по просторам
Нет звонких согласных, удовлетворяющих условию
багряный закат красный восход
й,н,р