Написать программу по переводу чисел из двоично-десятичной в десятичную — Pascal(Паскаль)

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.

Leave a Comment

+ 82 = 88