Вот такая программа позволяет инвертировать нечётные биты во введённом 16-ти разрядном числе (тип word).
Если что, счёт битов я брал начиная с нуля. Поэтому, младший бит (нулевой) считается чётным. Если вдруг у вас там принято считать биты начиная с единицы, то младший будет нечётным, и тогда в строке где b := 2; надо поставить единицу вместо двух.
Также, я сделал отображение всех 16 разрядов введённого числа, и числа которое получилось после инверсии битов (то есть, число выводится в двоичном виде, начиная со старших разрядов). Это сделано для удобства проверки работы программы.
После проверки лучше удалить эти две строки (они выделены жирным шрифтом), ведь в задании не сказано выводить числа в двоичном виде.
На будущее: за программу никто писать не будет. Программа, возможно, не совершенна (т.е. по-любому, можно было сделать короче), однако работает. Написана на Pascal, тестировал в веб-среде PascalABC.
var mo,tu,we,th,fr,sa,su,a: ShortInt; var b: Real; Begin Write('Температура воздуха в Понедельник: '); Readln(mo); Write('Температура воздуха во Вторник: '); Readln(tu); Write('Температура воздуха в Среду: '); Read(we); Write('Температура воздуха в Четверг: '); Readln(th); Write('Температура воздуха в Пятницу: '); Readln(fr); Write('Температура воздуха в Субботу: '); Readln(sa); Write('Температура воздуха в Воскресенье: '); Readln(su); a:=mo+tu+we+th+fr+sa+su; b:=a/7; Write('Средняя температура воздуха: ',b:0:2,' градусов.'); End.
Вот такая программа позволяет инвертировать нечётные биты во введённом 16-ти разрядном числе (тип word).
Если что, счёт битов я брал начиная с нуля. Поэтому, младший бит (нулевой) считается чётным. Если вдруг у вас там принято считать биты начиная с единицы, то младший будет нечётным, и тогда в строке где b := 2; надо поставить единицу вместо двух.
Также, я сделал отображение всех 16 разрядов введённого числа, и числа которое получилось после инверсии битов (то есть, число выводится в двоичном виде, начиная со старших разрядов). Это сделано для удобства проверки работы программы.
После проверки лучше удалить эти две строки (они выделены жирным шрифтом), ведь в задании не сказано выводить числа в двоичном виде.
var
a, b, n: word;
begin
write('Введите целое неотрицательное число: a= ');
readln(a);
b:=32768;for n:=15 downto 0 do begin write((a mod(b*2))div b);b:=b div 2;end;writeln();
b := 2;
for n := 0 to 7 do
begin
if (a mod (b * 2)) div b = 0
then a := a + b
else a := a - b;
b := b * 4;
end;
b:=32768;for n:=15 downto 0 do begin write((a mod(b*2))div b);b:=b div 2;end;writeln();
writeln('После инверсии нечётных битов: a= ', a);
end.
Программа, возможно, не совершенна (т.е. по-любому, можно было сделать короче), однако работает. Написана на Pascal, тестировал в веб-среде PascalABC.
var mo,tu,we,th,fr,sa,su,a: ShortInt;
var b: Real;
Begin
Write('Температура воздуха в Понедельник: ');
Readln(mo);
Write('Температура воздуха во Вторник: ');
Readln(tu);
Write('Температура воздуха в Среду: ');
Read(we);
Write('Температура воздуха в Четверг: ');
Readln(th);
Write('Температура воздуха в Пятницу: ');
Readln(fr);
Write('Температура воздуха в Субботу: ');
Readln(sa);
Write('Температура воздуха в Воскресенье: ');
Readln(su);
a:=mo+tu+we+th+fr+sa+su;
b:=a/7;
Write('Средняя температура воздуха: ',b:0:2,' градусов.');
End.