Не понравилась реализация, переделал, специально сохранив основу предыдущего решения.
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 Введенная строка не является шестнадцатиричным числом.
uses crt;
const nmax=100;
var m:array[1..nmax] of integer;
n,i,a,k:integer;
begin
randomize;
repeat
write('Размер массива до ',nmax,' n=');
read(n);
until n in [1..nmax];
writeln('Исходный массив:');
for i:=1 to n do
begin
m[i]:=random(50)+1;
write(m[i]:4);
end;
writeln;
write('Введите число для поиска a=');
read(a);
k:=0;
for i:=1 to n do
if(m[i]>a) and(m[i] mod 5=0)then k:=k+1;
writeln('Количество элементов больших ',a,' и кратных 5=',k);
end.