Program Pr1; uses crt; var mas:array[1..15] of integer; i,max,min,b,v:integer; Begin clrscr; for i:=1 to 15 do mas[i]:=random(10); for i:=1 to 15 do write(mas[i]); max:=0; min:=100000; b:=0; for i:=1 to 15 do begin if mas[i]>max then max:=i; if mas[i]<min then min:=i; end; if max>min then for i:=min to max div 2 do begin v:=mas[max-b]; mas[max-b]:=mas[i]; mas[i]:=v; b:=b+1; end else for i:=max to min div 2 do begin v:=mas[min-b]; mas[min-b]:=mas[i]; mas[i]:=v; b:=b+1; end; writeln(); for i:=1 to 15 do write(mas[i]); end.
procedure Add2Ring(a: integer); // Добавляет в кольцо очередной элемент begin if ir = n then ir := 1 else ir := ir + 1; R[ir] := a end;
var i, S, d: integer; P: longint;
begin S := 0; ir:=0; writeln('Вводите числа, 0 - конец ввода'); for i := 1 to n do begin readln(d); S := S + d; Add2Ring(d) end; repeat readln(d); if d <> 0 then Add2Ring(d); until d = 0; P := 1; for i := 1 to n do P := P * R[i]; writeln('Сумма первых ', n, ' чисел: ', S, ', произведение последних: ', P) end.
Если говорить о точном дополнении для двоичного числа, то оно получается путём: 1. Представить данное число в двоичном виде. 2. Инвертировать каждый разряд. (0 станет 1, а если был 1, то станет 0). 3. Прибавить к полученному числу 1.
Точное дополнение числа в сумме с самим числом даёт 0.
Найдём точное дополнение к числу 98. 1) 0110 0010 2) 1001 1101 3) 1001 1110 Число 1001 1110 - есть дополнение числа 98. Представлено в однобайтовом виде. (задействовано 8 бит). Старший знаковый бит "1". Число соответствует отрицательному числу -98. Да, действительно, дополнение к положительному числу 98 есть отрицательное число -98).
Найдём точное дополнение к числу -48 1) Представим в двоичном виде. 1101 0000 2) Инвертируем поразрядно 0010 1111 3) Прибавим 1 0011 0000.
Число 0011 0000 есть дополнение числа -48. Старший знаковый бит "0". Число соответствует положительному числу 48. Да, действительно, дополнение к отрицательному числу -48 есть положительное число 48).
Program Pr1;
uses crt;
var mas:array[1..15] of integer;
i,max,min,b,v:integer;
Begin
clrscr;
for i:=1 to 15 do mas[i]:=random(10);
for i:=1 to 15 do write(mas[i]);
max:=0;
min:=100000;
b:=0;
for i:=1 to 15 do begin
if mas[i]>max then max:=i;
if mas[i]<min then min:=i;
end;
if max>min then for i:=min to max div 2 do begin
v:=mas[max-b];
mas[max-b]:=mas[i];
mas[i]:=v;
b:=b+1;
end
else for i:=max to min div 2 do begin
v:=mas[min-b];
mas[min-b]:=mas[i];
mas[i]:=v;
b:=b+1;
end;
writeln();
for i:=1 to 15 do write(mas[i]);
end.