Зная количество бит в двоичной записи числа, можно посчитать количество бит в восьмеричной записи, так как из двоичной в восьмеричную систему счисления число можно привести группировкой по трем соседним разрядам, начиная с младших. Например, есть число 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-ричных разрядов
Program YouName;
Uses crt; // Использование модуля crt.
Const e = 2.71828; // Объявление константы e.
Var // Раздел для описания переменных.
m,n: Integer; // Объявляем целочисленные переменные.
x,u,y: Single; // Объявляем дробные переменные.
Label check1, check2; // Объявляем метки для оператора Goto.
Begin // Начало "тела" программы.
check1: // Метка для без условного перехода с оператора Goto.
write('Введите m: '); // Вывод текстового сообщения на экран консоли.
// {$I-} - это деректива, которая перехватывает вывод ошибок.
// т.e., если во время выполнение программы между {$I-} и {$I+} не будет ошибок,
// то значение IOResult будет равно 0. Если во время выполения программы произойдет ошибка,
// то программа не остановится, а задаст значение IOResult неравное 0.
// {$I+} соответственно отключает дерективу.
{$I-} // Включение директивы.
readln(m); // Ввод значения переменной m.
{$I+} // Отключение директивы
If IOResult <> 0 then // Если IOResult не равно 0 (т.е есть ошибки во время включенной директивы $I), то..
Begin // Начало подпрограммы.
writeln('Вы ввели неизвестный символ.'); // Вывод текстового сообщения на экран консоли.
writeln('Введите число'); // Вывод текстового сообщения на экран консоли.
Goto check1; // Переход на метку check1
End; // Конец подпрограммы.
check2: // Метка для без условного перехода с оператора Goto.
write('Введите n: '); // Вывод текстового сообщения на экран консоли.
{$I-} // Включение директивы.
readln(n); // Ввод значения переменной n.
{$I+} // Отключение директивы.
If IOResult <> 0 then // Если IOResult не равно 0 (т.е есть ошибки во время включенной директивы $I), то..
Begin // Начало подпрограммы.
writeln('Вы ввели неизвестный символ.'); // Вывод текстового сообщения на экран консоли.
writeln('Введите число'); // Вывод текстового сообщения на экран консоли.
Goto check2; // Переход на метку check2
End; // Конец подпрограммы.
x:=(m*n-exp(ln(e)*((-m)*0.7)))/(2.67); // Вычисление x
y:=ln(2)*(m+1); // Вычисление y
u:=0.125*sqrt(x/y)+exp(ln(e)*cos(x-y)); // Вычисление u
writeln(u:0:4); // Вывод текстового сообщения на экран консоли.
// u:0:4 - это задает переменной u четыре знака после запятой.
End. // Конец "тела" программы.
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-ричных разрядов