Во введённой строке определите количество слов, являющихся корректной запи
сью шестнадцатеричных чисел (то есть слова вида «10», «f» и т.п.) переведите
эти числа в десятичную систему и выведите преобразованную строку.
Ответы на вопрос:
ответ:
вот
объяснение:
const cf: string[16]='0123456789abcdef'; //цифры в сс 16
tt: array[1..16] of string[4]= ('','0001','0010','0011', //тетрады в сс16
'0100','0101','0110','0111',
'1000','1001','1010','1011',
'1100','1101','1110','');
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.
ответ:
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.
объяснение:
в вводимой строке символ разделитель - пробел
Популярно: Информатика
-
kadochkina06111.01.2021 11:48
-
Comicsans12314.04.2021 12:48
-
Maria12345678910112.06.2020 09:15
-
viktoria38814.04.2023 16:09
-
dim1010280607.03.2022 08:43
-
mmmmmvbbbbb17.02.2023 20:21
-
fhdjfjfuf12.06.2021 22:31
-
kushkulina201104.03.2021 12:54
-
инкндкн22.11.2022 02:27
-
woof322824.07.2020 14:44