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;
Continue;
if Is16 and (c in n16) then
w := w + c
else begin
Is16 := False;
WriteLn ('Количество 16-ричных чисел = ', n);
ReadLn;
end.
Объяснение:
В вводимой строке символ разделитель - пробел
ВОТ
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;
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)
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.
Объяснение:
В вводимой строке символ разделитель - пробел
ВОТ
Объяснение:
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.