Другие языки программирования и технологии

помогите пожалуйста.pascal

Ещё вариант:
const M = ['0'..'9', 'a'..'f', 'A'..'F'];
var S : String; L : Byte absolute S; N : Byte;
begin
Write('Введите HEX-число = '); ReadLn(S);
N := 0; repeat Inc(N); until (N = L) or Not(S[N] in M);
Write(S); if Not(S[N] in M) then WriteLn(' - не является шестнадцатиричным числом. ') else WriteLn(' - шестнадцатеричное число. ');
end.
Цикл останавливается, если очередной символ является недопустимым!

Ещё, в случае успеха, можно представить его в 10-тичном формате:

const M = ['0'..'9', 'a'..'f', 'A'..'F'];
var S, D: String; L: Byte absolute S; dL : Byte absolute D; N: Byte;
procedure Mul16; var P, N : Byte;
begin
P := 0; for N := dL downto 1 do begin P := P + (Ord(D[N]) - 48) * 16; D[N] := Chr(P mod 10 + 48); P := P div 10; end;
while P > 0 do begin D := Chr(P mod 10 + 48) + D; P := P div 10; end;
end;
procedure Hex2Dec(C: Char); var P, N : Byte;
begin
case C of '0'..'9' : P := Ord(C) - 48; 'A'..'F' : P := Ord(C) - 55; 'a'..'f' : P := Ord(C) - 87; end;
Mul16; for N := dL downto 1 do begin P := P + (Ord(D[N]) - 48); D[N] := Chr(P mod 10 + 48); P := P div 10; end;
while P > 0 do begin D := Chr(P mod 10 + 48) + D; P := P div 10; end;
end;

begin
Write('Введите HEX-число = '); ReadLn(S);
N := 0; D := '0';
repeat Inc(N); if S[N] in M then Hex2Dec(S[N]); until (N = L) or not (S[N] in M);
Write(S); if not (S[N] in M) then WriteLn(' - не является шестнадцатиричным числом. ') else begin WriteLn(' - шестнадцатеричное число. '); WriteLn('Равно 10-ому: ', D); end;
end.

Результат:
Введите HEX-число = fEdCbA
fEdCbA - шестнадцатеричное число.
Равно 10-ому: 16702650

Это чисто Паскаль от дяди Борланда!
Если переделывать под другой паскаль, то вместо assign в описании, нужно использовать length в теле программы…
Виктор Демчук
Виктор Демчук
66 393
Лучший ответ
program p_146;
var a:string; i:integer; b:boolean;
begin
write('Input something: '); readln(a); b:=true;
for i:=1 to length(a) do if not(a[ i]in['0'..'9','a'..'f','A'..'F']) then b:=false;
if b then writeln('16xxx') else writeln('No 16xxx'); readln
end.
Фируз Турсунов
Фируз Турсунов
56 928
исправь на

begin
b:=a квадр. скопки i квадр. скопки;
l:=ord(b);