Каков информационный объём сообщения "Хакер Вася молодец" при условии, что один символ кодируется одним байтом и соседние слова разделены одним пробелом?
Uses crt; var i,zi,zj:integer; s,n:String; begin clrscr; repeat writeln('Введите строку не больше 20 символов.'); readln(s); until length(s) <=20; for i:=1 to length(s) do begin if (s[i] = 'm') or (s[i]='м') then begin n:=copy(s,i,3); if n = 'max' then begin n:='min'; delete(s,i,3); insert(n,s,i); zi:=zi+1; end else begin n:=copy(s,i,4); if n = 'Макс' then begin n:='Мин'; delete(s,i,4); insert(n,s,i); zj:=zj+1; end; end; end; end; if (zi <> 0) or (zj <> 0) then writeln('В строке заменено ',zi,'раз. слово "max". А слово "макс" ',zj,' раз.') else writeln('В строке не найдено совпадений для замены...'); writeln; writeln(s); Readkey; end.
Const n = 50 'Максимальная емкость стека Dim LIFO(1 To n) As Variant Dim ptr As Integer 'указатель на вершину стека, моделируемого LIFO Dim Overflow As Boolean Dim EmptyLIFO As Boolean
Sub Push(Elem As Variant) 'добавляет элемент на вершину стека If ptr < n Then ptr = ptr + 1 LIFO(ptr) = Elem Overflow = False EmptyLIFO = False Else Overflow = True End If End Sub
Sub Pop(Elem As Variant) 'Возвращает элемент с вершины стека и удаляет его из стека If ptr > 0 Then Elem = LIFO(ptr) ptr = ptr - 1 End If EmptyLIFO = (ptr = 0) End Sub
Sub main() ' Пример работы со стеком - перестановка букв в словах строки. ' Не меняя порядка слов в строке, переставить в каждом слове буквы в обратном порядке. ' Слова разделяются ровно одним пробелом. Dim s As String, s1 As String, i As Integer, e As String s = Sheets("Лист1").Cells(1, 1).Value If Len(s) = 0 Then MsgBox "Нет входной строки" Exit Sub End If EmptyLIFO = True Overflow = False s1 = "" For i = 1 To Len(s) e = Mid(s, i, 1) 'Очередной символ If e <> " " Then Push e Else s1 = s1 + " " Do While Not EmptyLIFO Pop e s1 = s1 + e Loop End If Next i s1 = s1 + " " Do While Not EmptyLIFO Pop e s1 = s1 + e Loop s1 = Trim(s1) Sheets("Лист1").Cells(2, 1).Value = s1 End Sub
var i,zi,zj:integer;
s,n:String;
begin
clrscr;
repeat
writeln('Введите строку не больше 20 символов.');
readln(s);
until length(s) <=20;
for i:=1 to length(s) do
begin
if (s[i] = 'm') or (s[i]='м') then
begin
n:=copy(s,i,3);
if n = 'max' then begin n:='min'; delete(s,i,3); insert(n,s,i); zi:=zi+1; end
else
begin
n:=copy(s,i,4);
if n = 'Макс' then begin n:='Мин'; delete(s,i,4); insert(n,s,i); zj:=zj+1; end;
end;
end;
end;
if (zi <> 0) or (zj <> 0) then writeln('В строке заменено ',zi,'раз. слово "max". А слово "макс" ',zj,' раз.')
else writeln('В строке не найдено совпадений для замены...');
writeln;
writeln(s);
Readkey;
end.