program zadacha; var i,s: integer; a: array [1..10] of integer; begin writeln ('Введите элементы массива'); for i:=1 to 10 do begin write ('a[',i,']='); readln (a[i]); if a[i]<>0 then s:=s+1; if a[i]>0 then a[i]:=a[i]-20; end; writeln ('В массиве ',s,' не нулевых элемента'); for i:=1 to 10 do write (a[i],' '); end.
Зная количество бит в двоичной записи числа, можно посчитать количество бит в восьмеричной записи, так как из двоичной в восьмеричную систему счисления число можно привести группировкой по трем соседним разрядам, начиная с младших. Например, есть число 1100111. Сгруппируем его разряды: (1)(100)(111)=147 - в восьмеричной СС. Пусть количество разрядов 2-ичного числа равно n. Тогда количество разрядов восьмеричного числа будет n/3, деленное нацело и округленное вверх. n=7 => n/3=7/3. Округляем, будет 3. a) 10111010. n=8 => 8/3 - 3 8-ричных разряда б) 1001111000111, n=13 => 13/3 - 5 8-ричных разрядов в) A18C. Сначала найдем n. Посмотрим, сколько значащих разрядов у старшей цифры. A=1010 - 4 разряда. У остальных цифр по 4 разряда всегда. Поэтому n=3*4+4=16 => 16/3 - 6 8-ричных разрядов. г) 1375BE. 1=1 : 1 разряд => n=5*4+1=21 => 21/3 - 7 8-ричных разрядов
Для перевода из двоичной системы в десятичную необходимо: 1) Пронумеровать число в двоичной системе справа налево начиная от нуля. 2) Каждую единицу заменить на два со степенью, которая соответствует порядковому номеру данной единицы. 3) Сложить.
Например, в приложении разобрано первое число под буквой А. Чтобы не мучить себя однообразными расчетами, найдите "калькулятор систем счисления".
Для перевод в буквы берем таблицу ASCII и составляем слова.
var i,s: integer;
a: array [1..10] of integer;
begin
writeln ('Введите элементы массива');
for i:=1 to 10 do
begin
write ('a[',i,']=');
readln (a[i]);
if a[i]<>0 then s:=s+1;
if a[i]>0 then a[i]:=a[i]-20;
end;
writeln ('В массиве ',s,' не нулевых элемента');
for i:=1 to 10 do
write (a[i],' ');
end.