uses crt;
const tetr:array[0..9] of string[4]=
('0000','0001','0010','0011','0100','0101','0110','0111','1000','1001');
var s2,s,s1,s10:string;
n:longint;
c:integer;
k,f,i:byte;
begin
clrscr;
repeat
writeln('Введите число в двоично-десятичной системе:');
readln(s2);
if length(s2) mod 4<>0 then
while length(s2) mod 4<>0 do
s2:='0'+s2;//добавляем ведущие ноли
k:=0;
for i:=1 to length(s2)do
if not(s2[i] in ['0','1']) then//проверяем строку на 0 и1
begin
k:=1;
break;
end;
s1:=s2;
f:=0;
while s1<>'' do
begin
s:=copy(s1,1,4);
if s>'1001' then//проверяем на цифры 0-9
begin
f:=1;
break;
end;
delete(s1,1,4);
end;
if(k=1)or(f=1) then writeln('Число введено неверно, повторите ввод.');
until(k=0)and(f=0);
s1:=s2;/запомним число
s10:='';//составим десятичное
while s1<>'' do//пока есть символы
begin
s:=copy(s1,1,4);//берем тераду
for i:=0 to 9 do
if s=tetr[i]then//сравниваем с константой
s10:=s10+chr(i+48);//пишем символ ее номера
delete(s1,1,4);//удаляем тетраду
end;
writeln('Число в системе 10=',s10);//получаем число как строку, знаков можно до 63
val(s10,n,c);//если нужно в целочисленном типе
writeln('Число в системе 10=',n);
readln
end.