Var
n,S:integer;
Begin
S:=0;
Write('n = ');ReadLn(n);
repeat
n:=n div 10;
S:=S+n mod 10;
until n = 0;
WriteLn(S)
End.
Есть стек чисел (условно) бесконечной глубины.
Операция (сложение, вычитание, умножение, деление и т. д.) выполняется над элементом(ами) в самом верху стека. Результат отправляется обратно в стек.
Это дает возможность выполнять сложные вычисления с учетом правил приоритета операторов, т. к. можно хранить результаты предыдущих вычислений в стеке.
Например, (5 + 1) * (6 - 2) запишется так:
5 1 + (сейчас в стеке по адресу 0 лежит 6) 6 2 - (сейчас в стеке по адресу -1 лежит 6, а по адресу 0 лежит 4) * (сейчас в стеке по адресу 0 лежит 24).
Стек:
Адрес Число
0 24
-1 -
-2 -
... -
Vari, a: longint;beginread(a);i := 1;while (a mod 10 <> 0) doinc(i);writeln('Чисел в последовательности: ', i);end.
Ответ: Переводишь 57 в двоичную это 111001. Делаешь инверсию и получаешь 000110, добавляешь 1 (т.к знак - тоже имеет ячейку) и получаешь 111 - это 7 в 8-разрядной ячейке памяти
1 Мбайт =2^23 бита
1024 =2^10
2^23 : 2^10=2^13 бита - объём сообщения
1024 =2^10 cимволов - длина сообщения
2^13 : 2^10 =2^3 =8 бит - один символ
2^8 =256 символов - мощность алфавита (количество символов в алфавите)