Не понравилась реализация, переделал, специально сохранив основу предыдущего решения.
const legal = ['0'..'9', 'A'..'F', 'a'..'f'];
var s: string; i: integer; IsHex: Boolean;
begin writeln('Введите строку: '); readln(s); i := 1; IsHex := True; while (i <= length(s)) and IsHex do begin if not (s[i] in legal) then IsHex := False; i := i + 1 end; if isHex then writeln('Введенная строка является шестнадцатиричным числом.') else writeln('Введенная строка не является шестнадцатиричным числом.'); end.
Тестовое решение:
Введите строку: 58bfa Введенная строка является шестнадцатиричным числом. Введите строку: 1054Acg Введенная строка не является шестнадцатиричным числом.
function two(i: integer): boolean; begin two := (i mod 10 mod 2 = 0); end;
function three(i: integer): boolean; var buf, k: integer; begin buf := i; repeat k := k + (buf mod 10); buf := buf div 10; until (buf = 0); three := (k mod 3 = 0); end;
function four(i: integer): boolean; begin four := (i mod 100 mod 4 = 0); end;
function six(i: integer): boolean; begin six := (two(i) and (three(i))); end;
function BooleanToString(i: boolean): string; begin if (i) then BooleanToString := 'Да' else BooleanToString := 'Нет'; end;
var i: integer; begin readln(i); writeln('2: ', BooleanToString(two(i))); writeln('3: ', BooleanToString(three(i))); writeln('4: ', BooleanToString(four(i))); writeln('6: ', BooleanToString(six(i))); end.
begin
i:=0;
repeat
i:=i+1
read(a);
if a mod 2 =1 then
write(1) else write(0);
until (I<5);
end.