в правильности написания функции типов не уверенна.
elenak26038778
15.02.2022
:разделить число a = 10110102 на число b = 100102 в двоичной системе счисления.решение: 1) впишем делимое a в 8-ми разрядный регистр, начиная с младших разрядов (нумерация разрядов начинается с нуля). в недостающие разряды записываем нули. разр.76543210a: 01011010обратите внимание! так как для выполнения деления требуется производить операцию вычитания, это требует использования знаковой ариaметики. и поэтому в нашем случае 7-й разряд является знаковым (0 - соответствует положительному числу, 1 - отрицательному), а старшим разрядом числа является 6-й разряд. 2) впишем делитель в в 8-ми разрядный регистр, начиная с младших разрядов. в недостающие разряды записываем нули. разр.76543210b: 00010010 здесь также как и с числом a 7-й разряд является знаковым, а старшим разрядом числа является 6-й разряд. эти знаковые разряды будут показывать нам знаки, образующихся в процессе деления, частичных остатков. они не имеет никакого отношения к знакам исходных операндов и знаку результата, а играют чисто технологическую роль. 3) предварительный сдвиг делителя. сдвинем делитель b влево так, чтобы позиция старшей значащей единицы, в нем, совпала с позицией старшей значащей единицы в делимом a. количество необходимых для этого сдвигов запомним в числе k в нашем случае старшая значащая единица в делимом aрасположена в 6-м разряде, a в делителе b - в 4-м разряде. следовательно нам необходимо сдвинуть число b влево на 2 разряда (k = 2).сдвинутый делитель выглядит следующим образом : разр.76543210b: 01001000 4) так как в процессе деления множитель b придется не только прибавлять но и вычитать, то нам необходимо иметь число -b . для этого представим b в дополнительном коде. перевод в дополнительный код осуществим в два этапа: 4.1)вначале получим обратный код. для этого просто проинвертируем каждый разряд регистра (заменим "0" на "1", а "1" на "0"). разр.76543210bобр 10110111 4.2) прибавим к числу в обратном коде единицу и получим дополнительный код. разр.c76543210111bобр10110111+00000001bдоп10111000 таким образом -b = bдоп 5) процесс деления будет следующий: 5.1) вычитаем из делимого а делитель в (т.е. прибавляем -в).5.2) анализируем знак полученного частичного остатка (7-й разряд). в регистр результата записываем "0" если остаток отрицательный и единицу в противном случае. помним, что отрицательному числу соответствует наличие единицы в 7-м разряде и наоборот.5.3) сдвигаем частичный остаток на один разряд влево. при этом крайний правый (младший) разряд заполняется нулем, а знаковый разряд (7-й) в процессе сдвига не участвует.5.4) прибавляем к частичному остатку делитель в если остаток отрицательный либо вычитаем делитель в противном случае.5.5) анализируем знак полученного частичного остатка (7-й разряд). в регистр результата записываем "0" если остаток отрицательный и единицу в противном случае.5.6) действия описанные в пунктах 6.3-6.5 выполняем k раз (если k=0, то ни разу не выполняем). но, если после очередной операции сложения/вычитания частичный остаток, по модулю, будет меньше чем исходный (несдвинутый) делитель, то операция деления прекращается, а частное дополняется нулями так, чтобы число разрядов частного равнялось k+1.в нашем случае процесс деления выглядит следующим образом : разр.c 765432 1011111 частное а 01011010- b 101110001=000100101< --00100100- b101110000=1101110011111< --10111000+ b010010001=00000000 здесь в колонке "частное", сверху вниз, записаны разряды искомого частного, начиная со старших. обратите внимание - значение разряда частного - это просто иверсия 7-го (знакового) разряда частичного остатка.в следующем столбце - символика действий предпринимаемых в зависимости от знака частичного остатка. смысл этих символов следующий: + в - делитель в прибавляется к регистру делимого a; - в - делитель в вычитается из регистра делимого a (технически здесь прибавляется вдоп ); < -- - частичный остаток сдвигается на один разряд влево; " = " - показывается значение частичного остатка полученного после сложения. 6) определяем остаток от деления. для этого анализируем последний частичный остаток. в нашем случае он равен "00000000". то есть деление произвелось нацело без остатка. 7) определяем знак результата. если знаки исходных операндов одинаковы, то результирующее частное положительно и наоборот. в нашем случае знаки , следовательно результирующее частное положительно. ответ: 10110102 : 100102 = 1012.
stachevay-lera
15.02.2022
Procedure massiv; var a: array[1..10] of integer; i,max,min: integer; begin min: =1; max: =1; randomize; for i: =1 to 10 do begin a[i]: =random(100); if a[i]< a[min] then min: =i; if a[i]> a[max] then max: =i; write(a[i],' '); end; writeln('минимальное ', a[min], ' максимальное ', a[max]); if min< max then for i: = min+1 to max-1 do write(a[i],' ') else for i: = max+1 to min-1 do write(a[i],' ') end; begin massiv() end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Даны три натуральных числа.выяснить в каком из них сумма цифр большеопределить функцию для расчёта количества цифр натурального )
var x1,x2,x3,s1,s2,s3: integer;
function sumofnumber(num: integer): integer;
var s: string;
i: integer;
begin
s: =str(num);
for i: = 1 to length(s) do
sumofnumber: = sumofnumber+int(s[i]);
end;
begin
read(x1,x2,x3);
s1: =sumofnumber(x1);
s2: =sumofnumber(x2);
s3: =sumofnumber(x3);
if s1> s2 and s1> s3 then writeln(x1);
if s2> s1 and s2> s3 then writeln(x2);
if s3> s2 and s3> s1 then writeln(x3);
end.
в правильности написания функции типов не уверенна.