Во введённой строке определите количество слов, являющихся корректной запи
сью шестнадцатеричных чисел (то есть слова вида «10», «F» и т.п.) Переведите
эти числа в десятичную систему и выведите преобразованную строку.​

Ответы

Ответ дал: yakrissa228
0

Ответ:

ВОТ

Объяснение:

const cf:string[16]='0123456789ABCDEF'; //цифры в СС 16

     tt:array[1..16] of string[4]= ('0000','0001','0010','0011', //тетрады в СС16

                                    '0100','0101','0110','0111',

                                    '1000','1001','1010','1011',

                                    '1100','1101','1110','1111');

var s16,s2,s:string;

   f:boolean;

   i,j:byte;

begin

repeat

writeln('Введите число в СС 16');

readln(s16);

s16:=uppercase(s16);//переводим в верхний регистр

if s16[1]='-' then i:=2 else i:=1;

while(i<=length(s16))and(pos(s16[i],cf)>0) do inc(i);

if i<=length(s16) then writeln('Число введено неверно, повторите');

until i>length(s16);

f:=s16[1]='-'; //отрицательное

s2:=''; //переводим в СС 2

if f then delete(s16,1,1);

for i:=1 to length(s16) do

s2:=s2+tt[pos(s16[i],cf)];

if f then s2:='-'+s2;

writeln('Число в СС 2=',s2)

end.

Ответ дал: fedrfedr
0

Ответ:

program setof;

var

 n16: set of Char;

 s, w: string;

 i, n: Integer;

 c: Char;

 Is16: Boolean;

begin

 n16 := ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];

 Write ('Введите строку: ');

 ReadLn (s);

 w := '';

 Is16 := True;

 n := 0;

 for i := 1 to Length (s) do begin

   c := s [i];

   if (c = ' ') or (i = Length (s)) then begin

     if Is16 then begin

       Inc (n);

       WriteLn (w);

     end;

     w := '';

     Is16 := True;

     Continue;

   end;

   if Is16 and (c in n16) then

     w := w + c

   else begin

     Is16 := False;

     w := '';

   end;

 end;

 WriteLn ('Количество 16-ричных чисел = ', n);

 ReadLn;

end.

Объяснение:

В вводимой строке символ разделитель - пробел

Вас заинтересует