Технический форум

Технический форум (http://www.tehnari.ru/index.php)
-   Помощь студентам (http://www.tehnari.ru/forumdisplay.php?f=41)
-   -   Работа с битами. Массивы (http://www.tehnari.ru/showthread.php?t=269566)

Dhon 21.10.2020 17:26

Работа с битами. Массивы
 
Не понимаю, как решить эту задачу. Помогите пожалуйста! tehno010

Ввести последовательность из 8 символов. Если символ есть + - * / %, то заменить в нём четыре младших бита единицами, иначе – заменить 5-й бит нулем. Вывести исходную и преобразованную последовательности в символьной и восьмеричной формах

Евгений 22.10.2020 00:14

Pascal:

Код:

const cf:string='0123456789ABCDEF';
var m:array[1..8] of char;
    i,n,d,b:word;
    a:char;
    c:set of char;
    s,st:string;
begin
  c:=['+','-','*','/','%'];
  b:=15; d:=239; st:='';
  for i:=1 to 8 do Readln(m[i]);
  Writeln;
  for i:=1 to 8 do Write(m[i]:3);
  Writeln;
  for i:=1 to 8 do
  begin
    s:=''; n:=Ord(m[i]);
    while n>0 do
    begin
      s:=cf[n mod 8+1]+s;
      n:=n div 8;
    end;
    st:=st+'  '+s;
  end;
  Writeln(st);
  Writeln;
  for i:=1 to 8 do
  begin
    if m[i] in c
      then
      begin
        n:=Ord(m[i]) or b; m[i]:=Chr(n)
      end
      else
      begin
        n:=Ord(m[i]) and d; m[i]:=Chr(n)
      end;
  end;
  for i:=1 to 8 do Write(m[i]:3);
  Writeln;
  st:='';
  for i:=1 to 8 do
  begin
    s:=''; n:=Ord(m[i]);
    while n>0 do
    begin
      s:=cf[n mod 8+1]+s;
      n:=n div 8;
    end;
    st:=st+'  '+s;
  end;
  Writeln(st);
  Readln;
end.



Часовой пояс GMT +4, время: 04:05.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.