Обработка и хранение информации.
Var a,b,y: integer;
begin
readln(a, b);
if a < b then y:=b-a;
if a>=b then y:=a-b;
writeln(y);
end.
Program al;
var a,b:integer ;
begin
writeln('a=');
readln(a);
writeln('b=');
readln(b);
if (a<0) and (b<0) then writeln(a*b)
else
writeln(a+b);
readln;
<span>end.</span>
Рассматриваем однобайтное представление целых чисел. Старший (левый) разряд знаковый, остальные семь хранят число в дополнительном двоичном коде.
У положительного числа в знаковом разряде 0, у отрицательного единица.
Для положительного числа прямой, обратный и дополнительный коды совпадают.
У отрицательного числа в обратном коде все биты, кроме знакового, инвертируются. Для получения дополнительного кoда число в обратном коде арифметически увеличивается на 1.
Чтобы получить для отрицательного числа прямой код, нужно инвертировать все его биты, кроме знакового, а затем арифметически увеличить код на 1.
Как-то условие не очень понятно. Если требуется найти сумму ДВУХ чисел, то программа может быть такой:
var a1,a2,s: integer;
begin
a1:=11;
a2:=13;
repeat
a1:=a2;
a2:=a2+2;
s:=a1+a2;
until s>=150;
writeln(a1,'+',a2,'=',s);
<span>end.
Результат работы программы:
75+77=152
Если нужно найти сумму 11+13+15+ ..., по ка не получится >=150, то это можно сделать так:
var a,s: integer;
begin
a:=11;
s:=0;
repeat
write(a,'+');
s:=s+a;
a:=a+2;
until s>=150;
writeln('=',s);
<span>end.
Результат:
11+13+15+17+19+21+23+25+27+=171</span></span><span><span>
</span></span>